背景
前面有一篇文章介绍了php7以上的版本的大量数据的excel导出方案,但是对于还没有升级到php7的同学没啥用,因此这里又去找了一些资料,发现了一个支持php5.2以上版本的php excel导出库,现在应该没有人在使用php5.2以下的版本了吧,这里推荐以下,因为本地是7.0版本,所以实际的数据没有测试过,但是看git的说明,肯定是比phpexcel库要快。
介绍
git地址:https://github.com/mk-j/PHP_XLSXWriter
官方导出数据时间和内存使用说明
rows | time | memory |
---|---|---|
50000 | 1.4s | 0MB |
100000 | 2.7s | 0MB |
150000 | 4.1s | 0MB |
200000 | 5.7s | 0MB |
250000 | 7.0s | 0MB |
对比测试
phpexcel的导出效率看我另一篇文章*https://blog.csdn.net/szulilin/article/details/90722808
这里我再贴出来一下
使用phpexcel导出的数据时间和内存使用说明
rows | time | memory |
---|---|---|
1000 | 0.39s | 6MB |
10000 | 3.6s | 32MB |
50000 | 21.9s | 134MB |
100000 | 51s | 262MB |
使用的方式也很简单,如果没有使用composer,直接引入就好了,使用了composer的话,就用composer require 引入就好
include_once("xlsxwriter.class.php");
$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', array('c1'=>'integer','c2'=>'integer','c3'=>'integer','c4'=>'integer') );
for($i=0; $i<50000; $i++)
{
$writer->writeSheetRow('Sheet1', array($i, $i+1, $i+2, $i+3) );
}
$writer->writeToFile('huge.xlsx');
echo '#'.floor((memory_get_peak_usage())/1024/1024)."MB"."\n";
总结
通过对比,phpexcel的时间是指数上升的,到十万级基本已经是极限了,但是该库是线性的,而且不占内存,10w数据2.7秒,100w数据才30秒左右,web也不会超时,可以放心大胆的使用了。