csv 警告:简单XML加载字符串():内存分配失败:生长缓冲液

bis0qfac  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(133)

以下代码用于使用PHPExel将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");
    ?>

我正在尝试转换大Excel文件,70MB大小,CSV。我得到这个错误:

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

我在php.ini中增加了max_execution_timememory_limit=-1
有谁能告诉我为什么这个错误是得到我哪里错了吗?

kdfy810k

kdfy810k1#

好吧,我给你几个建议:
1.如果您的xlsx有多个工作表,而您只需要其中的一个或几个工作表,那么尝试只加载这些工作表。
1.使用Cell caching
1.您还可以使用工作表的toArray()方法来消除在构建数组的单元格之间的循环。
尝试组合或所有上述建议,看看它是否能帮助你。另外,参考论坛上的this讨论。

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

请参考此说明和以下描述来理解它。

相关问题