gpt4 book ai didi

PHPExcel加载函数内存不足

转载 作者:行者123 更新时间:2023-12-02 08:37:49 24 4
gpt4 key购买 nike

当我使用这个函数时:

$objPHPExcel = PHPExcel_IOFactory::load($fileName);

在较小的 excel 文件上,它需要一段时间,但最终将一个广泛的数组输出到 $objPHPExcel 中......不幸的是,当我在一个稍微大一点的更复杂的 Ecel 文件上尝试它时,我得到:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)

该文件是一个 xlsm 文件,大小为 1.7MB...这听起来正确还是有什么可疑的地方?

我认为这就是您需要的全部代码。我目前正在本地运行默认的 WAMP 设置。

最佳答案

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

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

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

我们的解决方案是使用 Java 和 Apache POI具有事件模型的类 - 它只读操作但内存和 CPU 效率很高。

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

据我所知,截至 2013 年 10 月,还没有可以直接导入大型 excel 文件的 PHP 库。

祝你好运。

关于PHPExcel加载函数内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19517763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com