当对各种报表需要进行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是不错的选择。