我有一个Excel文件(97-2003),我需要能够通过PHP导入和有它在文件中转换只是一个片CSV。这些是由用户上传的,所以没有办法手动进行。它需要用PHP。在XLS文件,以CSV与PHPExcel转换单张 - 内存耗尽
我目前使用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);
第4.2.1试试这个代码http://php-drops.blogspot.in/2011/04/read-excel-sheet-xls-file-with- php.html – Vineet1982 2013-03-20 17:51:12
您是否尝试过使用PHP的单元缓存来减少内存使用量? – 2013-03-20 21:07:58
干杯@MarkBaker,完美的工作!不确定是否要将其作为正确答案发布,我会将其标记为已回答? – BT643 2013-03-21 13:15:16