背景
如果你的php版本低于7.0,那下面说的都是废话!!!!
php后台开发经常会遇到excel导出的需求,遇到动不动几十万的导出需求,经常束手无策,网上找了很多方案,基本都是导出成cvs格式,没错csv格式占用内存少,导出快,很多时候用cvs可以解决问题。但是作为一个追求最优方案的程序员,是不满足于降低产品体验等级来将就的,而且产品也不允许这么做,就要excel!之前面对这种需求,我也没有办法。最近同事share了一款高效的,占内存少的拓展,试用了一下,效果很好,这里share给大家,但是这个拓展只支持7.0以上的php版本
介绍
git地址:https://github.com/viest/php-ext-excel-export
git上给的对比图,亲自试了一下,符合这个图的描述,10w数据导出,只需要1秒。
这个还要补充一下,拓展一时爽,安装火葬场,linux上安装没问题,phpize可以搞定,我windows上安装还是走了一些弯路,这里记录一下我走的弯路。
windows上编译安装是不可能的了,开始选择了pecl安装,原谅我之前没有用pecl安装过拓展,先去下了一个pecl,下载地址:https://pear.php.net/go-pear.phar ,下载后执行:php go-pear.phar,然后设定一堆目录,就安装好了,试一下 pecl install xlswriter ,凉凉如图:
安装失败,谁能告诉我为什么???
但是我没有放弃,直接上 https://pecl.php.net/package/xlswriter/1.2.3/windows 把dll文件下载下来了,这里注意ts和nts的区别,放到ext目录,php.ini配置一下,居然可以运行了神奇啊,下面贴出测试的代码,使用的php版本是php7.0
对比测试
先来使用 composer上下载数最多的phpexcel https://packagist.org/packages/phpoffice/phpexcel
然后是使用这个拓展的代码:
写法就简单了快一倍有没有!!!
以上是phpexcel的数据
以上是拓展的测试数据,500w数据,只要15秒,这个用phpexcel我不敢测试了,担心把电脑搞死机了。
总结
上面导出的是比较简单的数据,四列数据,都是‘aaaa’,这个拓展导出500w数据都很快,就是内存占了快2G,phpexcel到了10w级的数据就需要几十秒了,再大了前端都超时了,使用这个拓展,以后再也不用担心大数据量的导出了,百万级的导出不是梦,希望谁能给我解释一下,为什么我的pecl用不了!!!