PHP_XLSXWriter 代替 PHPExcel

在我上一篇博客中,解决了 PHPExcel 内存溢出的问题。但是,查询一万条数据时,PHP 执行超时了。经过谷歌发现,这是 PHPExcel 本身效率的问题,随后发现有个叫 PHP_XLSXWriter 的插件可以代替 PHPExcel。

无法打开文件

刚开始用的时候,用官方给的示例代码,导出的文件为0字节,且文件无法打开,但是用命令行运行示例代码却可以正常导出。

我开始跟踪代码,发现有个地方用到了系统的缓存目录,PHP 程序自然不能在系统目录在进行读写。通过 XLSXWriter::setTempDir() 这个方法设置缓存目录到当前的工程中,问题就解决了。

总结

虽然 PHP_XLSXWriter 的功能没有 PHPExcel 强大,但是已经足够用了,最重要的是效率大大的提高了。一万条数据的导出 PHPExcel 要50秒以上,而 PHP_XLSXWriter 不到10秒就可以搞定了。这个提升可以说是质的飞越,再也不用超时的问题,也不用当心内存溢出。

PHP_XLSXWriter 只有一个文件,里面有两个类,很轻量,官方的示例代码也足够详细,容易上手,嫌 PHPExcel 慢的读者可以试试这个插件。