警告:simplexml_load_string():内存分配失败:正在增长缓冲区


Warning: simplexml_load_string(): Memory allocation failed : growing buffer

以下代码用于使用PHPExcel:将XLSX文件转换为CSV

  <?php
    require_once 'PHPExcel/PHPExcel/IOFactory.php';
    $excel = PHPExcel_IOFactory::load("test123.xlsx");
    $writer = PHPExcel_IOFactory::createWriter($excel, 'CSV');
    $writer->setDelimiter(";");
    $writer->setEnclosure("");
    $writer->save("test123.csv");
    ?>

我正在尝试将70MB大小的大型excel文件转换为CSV。我得到这个错误:

Warning: simplexml_load_string(): Memory allocation failed : growing buffer 

我在php.ini中增加了max_execution_timememory_limit=-1

有人能告诉我为什么这个错误会让我出错吗?

好吧,这里有一些建议:

  1. 如果你的xlsx有多张图纸,而你只需要其中的一张或几张,那么试着只加载它
  2. 使用单元格缓存
  3. 您还可以使用工作表的toArray()方法来消除在构建数组的单元格中的循环

尝试以上所有建议的组合,看看是否能对你有所帮助。此外,请参阅论坛上的讨论。

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
PHPExcel_Settings::setCacheStorageMethod($cacheMethod);

请参阅此内容和下面的描述来理解它。