以下代码用于使用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_time
和memory_limit=-1
。
有人能告诉我为什么这个错误会让我出错吗?
好吧,这里有一些建议:
- 如果你的xlsx有多张图纸,而你只需要其中的一张或几张,那么试着只加载它
- 使用单元格缓存
- 您还可以使用工作表的
toArray()
方法来消除在构建数组的单元格中的循环
尝试以上所有建议的组合,看看是否能对你有所帮助。此外,请参阅论坛上的讨论。
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
PHPExcel_Settings::setCacheStorageMethod($cacheMethod);
请参阅此内容和下面的描述来理解它。