首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHPExcel load函数内存不足

PHPExcel load函数内存不足
EN

Stack Overflow用户
提问于 2013-10-22 20:22:36
回答 2查看 3.8K关注 0票数 2

当我使用这个函数时:

代码语言:javascript
复制
$objPHPExcel = PHPExcel_IOFactory::load($fileName);

对于较小的excel文件,这需要一段时间,但最终会将大量的数组输出到$objPHPExcel中。不幸的是,当我在一个稍大、更复杂的Ecel文件上尝试它时,我得到了:

代码语言:javascript
复制
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)

该文件是一个xlsm文件,大小为1.7MB...这听起来是对的,还是有什么可疑之处?

我认为这就是您需要的所有代码。我正在用完本地设置的默认WAMP。

EN

回答 2

Stack Overflow用户

发布于 2013-10-22 21:41:54

我也有同样的问题。在我们公司,我们需要将巨大的xls(x)文件导入到数据库中。我们一直在使用PEAR Spreadsheet Excel Reader,但它不再受支持,而且我们在更新的文件中遇到了许多错误,所以我们尝试切换到PHPExcel。不幸的是,我们没有设法克服内存限制问题。我们花了很长时间来尝试。有没有办法加载100K行与列最多'BB‘使用PHPExcel。

它不是适合这项工作的工具。PHP Excel在内存中将整个电子表格构建为对象。这是没有办法的。

您需要的是一种可以逐行、逐单元地读取文件的工具。

我们的解决方案是使用事件模型的Java和Apache POI类--它确实是只读操作,但是内存和cpu效率非常高。

如果您只需要支持基于xml的"Office Open XML“格式(xlsx),而不需要支持旧的基于OLE的格式,那么您可以将其作为您自己的XML处理。如果你深入了解,格式并不是很复杂。只需解压缩一个文件并查看xmls。您有一个包含字符串表的文件,以及一个包含每个工作表的行和单元格的文件。您应该首先解析字符串表,然后使用xml阅读器(而不是DOM)解析工作表数据。

据我所知,到2013年10月为止,还没有PHP库可以导入大型excel文件。

祝好运。

票数 4
EN

Stack Overflow用户

发布于 2013-10-22 20:29:14

根据我的经验,在很多操作中,PHPExcel会耗尽内存。

您可以尝试提高脚本的内存限制。

代码语言:javascript
复制
ini_set('memory_limit','256M');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19517763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档