php 大excel,带有多个选项卡的PHPExcel大型数据集 – 内存耗尽

使用PHPExcel我可以单独运行每个选项卡并获得我想要的结果但是如果我将它们全部添加到一个excel中它只是停止,没有错误或任何事情.

每个标签包含大约60到8万条记录,我有大约15到20个标签.因此大约有1600000条记录分成多个标签(这个数字也可能会增长).

我还使用.xlsx扩展测试了.xls的65000行限制,如果我运行每个选项卡它自己的excel文件没有问题.

伪代码:

从db读取数据

启动PHPExcel进程

解析每个页面的数据(一些样式/格式但不多)

(使用公式SUM将每个数字字段值汇总到Excel的底部的总计列中)

保存excel(xlsx格式)

我有3GB的RAM所以这不是一个问题,脚本设置为执行没有超时.

我在许多项目中使用过PHPExcel并且取得了很好的效果但是拥有如此庞大的数据集似乎是一个问题.

每个人都有这个问题?解决?提示?等等…

更新:

在错误日志—内存耗尽

除了在盒子中添加更多内存之外,我还能做其他任何提示吗?

每个人都保存当前状态和编辑excel与新数据?

解决方法:

我有完全相同的问题,谷歌搜索没有找到有价值的解决方案.

由于PHPExcel生成对象并将所有数据存储在内存中,在最终生成本身也存储在内存中的文档文件之前,在PHP中设置更高的内存限制永远不会完全解决此问题 – 该解决方案不能很好地扩展.

要真正解决问题,您需要“动态”生成XLS文件.多数民众赞成我做了什么,现在我可以肯定,无论数据库返回多少(百万)行,“将SQL结果集下载为XLS”都能正常工作.

可惜的是,我找不到任何具有“驱动”XLS(X)生成功能的库.

对我来说效果很好 – 我有多张数据表,有很多数据,甚至没有触及PHP内存限制.很好地扩展.

如果你真的需要生成XLSX,事情会变得更加复杂. XLSX是包含多个XML文件的压缩存档.为此,您必须将所有数据写入磁盘(或内存 – 与PHPExcel相同的问题),然后使用该数据创建存档.

http://en.wikipedia.org/wiki/Office_Open_XML

可能它还可以“动态”生成压缩档案,但这种方法似乎非常复杂.

标签:php,phpexcel,large-data,performance

来源: https://codeday.me/bug/20190626/1293563.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值