1、引入PHPExcel类库:
require_once '../Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$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');//将内容添加到文件中并输出文件
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');
$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);
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);
$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()进行计算过程。
$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()得到页眉页脚,再利用setOddHeader或setOddFooter设置页眉页脚内容。
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);
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
for ($i = 1; $i < 200; $i++) {
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value');
}
$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');
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
$objPHPExcel->getActiveSheet()->mergeCells('A28:B28'); // Just to test...
$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28');