Преобразование одного листа в файле XLS в CSV с PHPExcel - исчерпана память
У меня есть файл Excel (97-2003), который нужно импортировать через PHP, и он должен конвертировать только один лист в файле в CSV. Они загружаются пользователями, поэтому нет возможности сделать это вручную. Это должно быть с PHP.
В настоящее время я использую PHPExcel, он работал нормально, пока мы не получили файл с более чем 33 000 строк ... что дает фатальную ошибку PHP:Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 97 bytes) in [pathtophpexcel]\PHPExcel\Worksheet.php on line 11231
Есть ли способ, которым я могу оптимизировать это дальше, или PHPExcel просто не подходит для работы с большими листами? Код, который я использую, довольно прост, поэтому не уверен, удастся ли его оптимизировать дальше, но пальцы скрещены! Вот код, который я использую:
$reader = PHPExcel_IOFactory::createReader('Excel5');
$reader->setReadDataOnly(true);
$reader->setLoadSheetsOnly('Details');
$excel = $reader->load($filename);
$writer = PHPExcel_IOFactory::createWriter($excel, 'CSV');
$writer->save($filename_fixed);
Если PHPExcel не подходит для этой работы, что мне лучше всего использовать?
Редактировать - это рабочий код после предложения Марка
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize' => '2GB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$reader = PHPExcel_IOFactory::createReader('Excel5');
$reader->setReadDataOnly(true);
$reader->setLoadSheetsOnly('Details');
$excel = $reader->load($filename);
$writer = PHPExcel_IOFactory::createWriter($excel, 'CSV');
$writer->save($filename_fixed);