PHPExcel的使用案例:

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");
PHPExcel的使用案例:_第1张图片


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设置页眉页脚内容。

PHPExcel的使用案例:_第2张图片

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、、、、、、、、、、、、、、、待续。














你可能感兴趣的:(PHP)