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