日期:2014-05-17  浏览次数:20567 次

phpexcel 生成大数据量excel耗时问题
最近在用phpexcel做一个报表模板,把用户数据做一些处理,然后导出excel供客户查看。
现在遇到了些问题:
1.耗时问题
经过测试生成一个10000行、6列的只含一个sheet的excel,总共需要耗时26秒多
我把代码内部各部分耗时都打印出来了,发现填充sheet里cell的值和样式很费时,两个加起来要11秒;
还有一个就是保存到本地文件里save('test.xls','Excel5')时间花得也很长需要15秒(不知道为什么这么长)。
填充sheet里cell的值我使用的是phpexcel里的fromArray方法,设置样式也是使用getCell($cellRange)来做的,
请问还有优化的点的方法,能缩短时间吗?

2内存使用问题
上面的情况我代码使用内存最高峰有103m,数据量在大点那就无法想象了,我的数据都是保存在数组中的,
和这个有关吗?有什么好的建议吗?

请帮帮忙,先谢谢了!

------解决方案--------------------
第一个问题不好说
第二个问题,你把一万条数据都放数组里了,当程序开始执行的时候,就一次性吧数据全部加载进内存了,肯定会消耗很多内存,可以考虑将数据写进数据库,然后循环处理,或者写入文件,用指针处理
------解决方案--------------------
from array?也就是先生成一个很大的数组然后插入么?

不是可以循环插入的么?

我之前做过导出约50 0000条数据的excel.确实时间会比较长(10多个sheet,大约30s左右),内存占用也很恐怖。据说新版的phpexcel加入了单元格缓存的功能,可能会对性能提升有所帮助。
------解决方案--------------------
不如写入csv格式咯