PHP_EXCEL是目前找到功能最全、最快的读取写入excel的扩展,支持xls和xlsx格式的excel。该扩展基于libxl库(收费,公司已购买linux版)
使用文档下载 : https://files.cnblogs.com/files/zakun/confoo_phpexcel.zip
===================================
1.参考网站
1)开发者 https://github.com/iliaal/php_excel
2)扩展作者写的使用介绍 http://ilia.ws/files/confoo_phpexcel.pdf
3)由于没有文档,基本看代码和作者注释 https://github.com/iliaal/php_excel/tree/master/docs
4)测试用例,也有很多方法,可以参考。https://github.com/iliaal/php_excel/tree/master/tests
5)写入性能对比 https://blog.mayflower.de/4922-Performant-Handling-Excel-Files-PHP.html
6)libxl http://libxl.com
2.扩展安装
1)仅支持linux系统,10.64.64.109、10.64.64.110 已安装
2)安装参考 http://libxl.com/php.html
3.扩展使用
我们的项目中可以直接使用,代码可参考如下(另外:/protected/components/DataToExcel.php 是异步处理的主要方法):
$xlBook = new ExcelBook(NULL,NULL,TRUE);
$xlBook->setLocale('UTF-8');
$xlSheet = $xlBook->addSheet('sheet1');
$xlFormat = $xlBook->addFormat();
$xlFormat->borderStyle(ExcelFormat::BORDERSTYLE_THIN);
$xlFormat->verticalAlign(ExcelFormat::ALIGNV_CENTER);
$xlFormat->horizontalAlign(ExcelFormat::ALIGNH_CENTER);
$xlRow = 0;
$data = array();//二维数组
foreach ($data as $k=>$v)
{
// 整行写入,详细用法参考 https://github.com/iliaal/php_excel/blob/master/docs/ExcelSheet.php
//function writeRow($rownum=0,$data=array(),$colnum_start=0,$format=null)
$xlSheet->writeRow($xlRow,$v,0,$xlFormat);
$xlRow++;
}
//设置页眉和页脚参考:https://github.com/iliaal/php_excel/blob/master/tests/042.phpt
$footer = '&R &P of &N';
$title = 'test';
$xlfile = '/tmp/test.xls';
$xlSheet->setHCenter(true);
$xlSheet->setPaper(ExcelSheet::PAPER_A4);
$xlSheet->setLandscape(true);
$xlSheet->setHeader("&L &I &C &E ".$test." &R ", 0.5);
$xlSheet->setFooter($footer,0.25);
$xlBook->save($xlfile);