内存大小超过phpexcel

时间:2016-08-25 10:18:57

标签: php phpexcel

我有一个巨大的文件,我想阅读,所以我可以填充我的MySQL数据库。我试图使用PHPExcel库,但是当我想加载文件时出现错误:

  

致命错误:允许的内存大小为1610612736字节耗尽(尝试过   在C:\ Wamp \ www \ Classes \ PHPExcel \ Worksheet.php上分配22个字节)   第964行

我已经增加了memory_limit文件中php.ini的值,但仍然不够。我的Excel文件超过60 MB(5 109 719个单元格)。

有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

使用PHPExcel读取500万个单元格是一个棘手的问题。您可以尝试使用Mark提到的单元缓存或分块加载技术。请查看此处的文档:https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/04-Configuration-Settings.md

我还尝试使用这些技术使用PHPExcel读取数百万个单元格,但这会成为性能问题(而不是内存问题)。阅读这么多细胞需要永远。因此,您也可以尝试使用Spout:https://github.com/box/spout。读取500万个单元只需要几MB的内存,需要20到40分钟。

答案 1 :(得分:0)

如果您没有某些特殊功能,那么将文件导出为CSV并将其直接导入MySQL会更好。 5百万个单元格很多,使用PHP需要很长时间。

Importing a csv into mysql via command line

我不是一个很大的Java粉丝,但是你得到了一个好的lib。

https://poi.apache.org/

POI在大文件上表现良好,并且比PHP工作得更好。如果您无法将文件转换为CSV并阅读它。你应该看看POI。