PHPExcel强大的Excel扩展处理类

当对各种报表需要进行Excel导出或其他处理的时候,PHPExcel是一个不错的选择,它对office2007以及office2003能完美支持,解决了各种不兼容问题,那么今天就来介绍一下PHPExcel的使用方法吧,对于一个扩展最简单的理解就是如下步骤:引入->实例->使用。

PHPExcel是相当强大的 MS Office Excel 文档生成类库,当需要输出比较复杂格式数据的时候,PHPExcel 是个不错的选择。不过其使用方法相对来说也就有些繁琐。

一、使用实例

//保存目录
$file = str_replace('\\','/' , dirname(dirname(__file__)));
$fileCount = strlen($file);
//这里的目录是我的项目路径,其他自行更改
$fileName = substr_replace($file,'web/www/excel/'.$this->xmlFileName,$fileCount-7);

//设置时区为中国
date_default_timezone_set('PRC');
//核心部分
//载入核心库类
require_once('pto/outExcel/PHPExcel.php');
//实例
$objPHPExcel = new PHPExcel();

//设置文档属性 - 连贯操作
$objPHPExcel->getProperties()->setCreator("tieyou Kefu") //设置作者
->setLastModifiedBy("kefu User") //设置最后修改的人
->setTitle("$this->xmlFileName") //设置标题
->setSubject("Office 2007 XLSX Data") //设置主题
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")//描述
->setKeywords("office 2007 openxml php")//设置关键字
->setCategory("data for Excel");//设置分类

//添加一些数据,并在这里使用一些公式
$objPHPExcel->getActiveSheet()->setCellValue('A5', 'Sum:'); //在Excel A列第5行写入“Sum:”字符串。

$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Range #1') //在B列1行 写入“Range #1”
                              ->setCellValue('B2', 3) //在B列2行 写入 3
                              ->setCellValue('B3', 7) //在B列3行 写入 7
                              ->setCellValue('B4', 13) //在B列4行 写入 13
                              ->setCellValue('B5', '=SUM(B2:B4)'); // 在B列5行 写入Excel原生计算公式“=SUM(B2:B4)”

$objPHPExcel->getActiveSheet()->setCellValue('A7', 'Total of both ranges:'); //在A列7行 写入“Total of both ranges:”
$objPHPExcel->getActiveSheet()->setCellValue('B7', '=SUM(B5:C5)'); //在B列7行 写入Excel原生计算公式“=SUM(B5:C5)”

$objPHPExcel->getActiveSheet()->setCellValue('A8', 'Minimum of both ranges:');//在A列8行 写入 “Minimum of both ranges:”
$objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C4)'); //在A列8行 写入Excel原生计算公式“=MIN(B2:C4)”

$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Maximum of both ranges:'); //在A列9行 写入“Maximum of both ranges:”
$objPHPExcel->getActiveSheet()->setCellValue('B9', '=MAX(B2:C4)'); //在B列9行 写入Excel原生计算公式“=MAX(B2:C4)”

$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Average of both ranges:'); //在A列10行 写入“Average of both ranges:”
$objPHPExcel->getActiveSheet()->setCellValue('B10', '=AVERAGE(B2:C4)');//在B列10行 写入Excel原生计算公式“=AVERAGE(B2:C4)”

//Excel表格的起始页码 0
$objPHPExcel->setActiveSheetIndex(0);

//这个部位是为了实现点击下载至客户端 和 直接保存至服务端文件夹
if($strMakeType == 1){
	//保存目录
	$file = str_replace('\\','/' , dirname(dirname(__file__)));
	$fileCount = strlen($file);
	$fileName = substr_replace($file,'web/www/excel/'.$this->xmlFileName,$fileCount-7);
}else{
	//下载
	header('Content-Type: application/vnd.ms-excel');
	header('Content-Disposition: attachment;filename='.$this->xmlFileName);
	header('Cache-Control: max-age=0');
}

//以下部分为了让office2007和office2003互相兼容

//兼容office 2007
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', $fileName));

//兼容office 2003
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', $fileName));

//如果是 点击下载 至客户端
//$objWriter->save('php://output');

至此,最基本的实例已完成,可以从上例看出,对Excel原生支持还是不错的,对于php处理Excel总体来说,PHPExcel是不错的选择。