注意:本博客是写给phper看的
相信给都用过phpexcel吧:
1.文件包很大,文件多很繁杂,随项目一期就很占空间
2.运行特别占内存对大批量的表格数据几乎会让人累觉不爱,处理速度非常慢
3.PHPExcel官方已不再维护了这个项目了
说实话,第一第二条是真的让我难受,phpexcel虽然功能很强大,但是对于我的工作场景并不适合,我们项目本身要求节俭、性能化,导入导出的数据量都很大,几万到几十万不等,对读写速度很是要求,后来发现一个很好用的扩展,PHP_XLSXWriter,相比于PHPExcel,PHP_XLSXWriter是一个小而强悍的Excel读写插件,它并没有PHPExcel功能丰富,很多高级操作比如冻结表头,并不具备,但是它导出速度非常快,非常适合于数据量特别大,报表格式不是很复杂的导出需求,下图是官方的速度和内存测试:
这是PHP_XLSXWriter的github地址,当然大家也可以通过本地下载,你可以点击下载把它下载下来。解压之后你可以看到,它的核心文件只有一个: xlswriter.class.php,examples目录为代码样例目录,里面有很多例子你可以参考。
使用
对于日常中绝大部分的报表需求,PHP_XLSXWriter 是可以胜任的,下面通过一个例子来熟悉一下API的使用。
假设我们要导出下图中的报表,并通过浏览器实现下载:
代码实现:
//writer 类
$writer = new XLSXWriter();
//文件名
$filename = "example.xlsx";
//设置 header,用于浏览器下载
header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
//导出的数据
$string = array (
0 =>
array (
'payc_bill_time' => '2017-07-12 16:40:44',
'payt_received_date' => '2017-07-12',
'ci_name' =