PHPExcel的使用案例:

来源:互联网 发布:淘宝退货没填快递单号 编辑:程序博客网 时间:2024/06/05 14:06

1、引入PHPExcel类库:

require_once '../Classes/PHPExcel.php';

2、创建一个PHPExcel对象:

$objPHPExcel = new PHPExcel();

3、设置文档的属性:

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw") ->setLastModifiedBy("Maarten Balliauw") ->setTitle("PHPExcel Test Document") ->setSubject("PHPExcel Test Document") ->setDescription("Test document for PHPExcel, generated using PHP classes.") ->setKeywords("office PHPExcel php") ->setCategory("Test result file");


4、給Excel表格增加数据:

$objPHPExcel->setActiveSheetIndex(0)            ->setCellValue('A1', 'Hello')            ->setCellValue('B2', 'world!')            ->setCellValue('C1', 'Hello')            ->setCellValue('D2', 'world!');
解析:setActiveSheetIndex(0)表示选择当前Excel表的第一张表并为活动表。

setCellValue('A1', 'Hello')表示在A1的位置添加上“Hello”这条数据。


5、重新工作表的名称:

$objPHPExcel->getActiveSheet()->setTitle('Simple');

解析:setTitle('Simple')定义工作表的名称为:Simple


6、生成Excel文件(在服务器中):

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
其中Excel2007也可以为Excel5。表示的是文档类型。其中Excel2007生成的文件为.xlsx后缀,Excel5为.xls后缀。


7、向浏览器输出一个文件并添加上输出的内容:

header('Content-Type: application/vnd.ms-excel');//指定为:Excel2005的格式输出header('Content-Disposition: attachment;filename="01simple.xls"');//指定文件名$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('php://output');//将内容添加到文件中并输出文件


8、同上,只是这是以Excel2007的格式输出

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment;filename="01simple.xlsx"');$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save('php://output');

9、设置默认字体和大小:

$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial')->setSize(10);


10、在Excel表中格式化添加时间:

//年月日$dateTimeNow = time();$objPHPExcel->getActiveSheet()->setCellValue('A9', 'Date/Time')                              ->setCellValue('B9', 'Date')                              ->setCellValue('C9', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow ));$objPHPExcel->getActiveSheet()->getStyle('C9')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);//时分秒$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Date/Time')                              ->setCellValue('B10', 'Time')                              ->setCellValue('C10', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow ));$objPHPExcel->getActiveSheet()->getStyle('C10')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);//年月日,时分秒$objPHPExcel->getActiveSheet()->setCellValue('A11', 'Date/Time')                              ->setCellValue('B11', 'Date and Time')                              ->setCellValue('C11', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow ));$objPHPExcel->getActiveSheet()->getStyle('C11')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DATETIME);

解析:getActiveSheet()表示为选中这张活动表,getStyle('C11')表示选中这张活动表的“C11”单元格,并准备修改其样式。getNumberFormat()表示得到数字的格式化类。


11、添加文字,可以设置样式:

$objRichText = new PHPExcel_RichText();$objRichText->createText('你好 ');$objPayable = $objRichText->createTextRun('你 好 吗?');$objPayable->getFont()->setBold(true);//设置“你好吗”变粗$objPayable->getFont()->setItalic(true);//设置“你好吗”为斜体$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) );//设置“你好吗”颜色$objRichText->createText(', unless specified otherwise on the invoice.');$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text')                              ->setCellValue('C13', $objRichText);//将拼接好的文字添加到工作表中

解析:createText('你好 ')只具有拼接语句的作用,并不能将内容添加到excel中,$objPayable = $objRichText->createTextRun('你 好 吗?');$objPayable类似于选择器的作用,createTextRun与createText作用相同并具有选择器的作用,当然以后再用只需要使用$objPayable即可。getFont表示得到这个字段要对其样式进行修改。到这里我们可以发现getStyle是在已添加的单元格内修改样式,getFont则是在未添加单元格内的字体作样式的设置。注意,在拼接语句时如果需要换行可以在字符串后增加“\n”转义字符。


12、这里会总结目前为止的向单元格内添加文字方法:

getCell("C14")->setValue($objRichText2);
解析:首先getCell("C14")取到“C14单元格”,然后利用setValue($str)添加单元格中的内容。
getStyle("C14")->getAlignment()->setWrapText(true);
解析:设置自动换行。


13、设置单元格大小自适应:

getColumnDimension('C')->setAutoSize(true);


14、涉及到单元格需要计算的地方:

$objPHPExcel->getActiveSheet()->setCellValue('A10', 'Average of both ranges:');$objPHPExcel->getActiveSheet()->setCellValue('B10', '=AVERAGE(B2:C4)');echo date('H:i:s') , " Average value of both Ranges is " ,                  $objPHPExcel->getActiveSheet()->getCell('B10')->getCalculatedValue() , EOL;
解析:首先需要使用setCellValue('B10', '=AVERAGE(B2:C4)');注意有Excel函数,然后还需要在紧接着取得单元格并使用getCalculatedValue()进行计算过程。


15、打印:设置页眉和页脚,只有打印出来才能看见效果:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&G&C&HPlease treat this document as confidential!');$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N');

解析:首先需要利用:getHeaderFooter()得到页眉页脚,再利用setOddHeadersetOddFooter设置页眉页脚内容。

16、打印:向页眉中添加图片:

// Add a drawing to the header$objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing();$objDrawing->setName('PHPExcel logo');$objDrawing->setPath('./images/phpexcel_logo.gif');$objDrawing->setHeight(36);$objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);


17、打印:设置打印方向和纸张大小:

$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);


18、利用for循环向单元格内添加内容:

for ($i = 1; $i < 200; $i++) {$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i);$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value');}


19、设置单元格的高,宽,距离和边框:

$objPHPExcel->getActiveSheet()->getComment('E13')->setWidth('100pt');$objPHPExcel->getActiveSheet()->getComment('E13')->setHeight('100pt');$objPHPExcel->getActiveSheet()->getComment('E13')->setMarginLeft('150pt');$objPHPExcel->getActiveSheet()->getComment('E13')->getFillColor()->setRGB('EEEEEE');


20、合并单元格,拆分单元格:

$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');$objPHPExcel->getActiveSheet()->mergeCells('A28:B28');// Just to test...$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28');

21、、、、、、、、、、、、、、、待续。














原创粉丝点击