0

使用 PHPExcel 加载 38MB .csv 文件时,huge text node: out of memory即使我已将其设置php memory_limit为 1024M,我也会收到错误消息。

知道如何加载大型 .csv 文件吗?

错误

Error loading file "data.csv": Warning: DOMDocument::loadHTMLFile(): xmlSAX2Characters: huge text node: out of memory in /var/www/site/data.csv, line: 264094 in /var/www/site/vendor/CodePlex/PHPExcel/PHPExcel/Reader/HTML.php line 458

PHP 代码

ini_set('memory_limit', '1024M');

$inputFileName = '/var/www/site/data.csv';
$phpExcel = new PHPExcel;

//  Read your Excel workbook
try 
{
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} 
catch(Exception $e) 
{
     die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}

php.ini

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M
4

2 回答 2

1

您可以使用fgetcsv并逐行加载 csv。

$file = '/path/filename.csv';

$f = fopen($file, 'rb');

while( $cols = fgetcsv($f) ) 
{
  // $cols[0]; // first column of the current row
}

fclose($f);
于 2013-04-14T16:32:07.913 回答
0

使用 PHPExcel 读取大量 Excel 文件问题的可能解决方案

如何使用 PHPExcel 从大型 Excel 文件 (27MB+) 中读取大型工作表?

答案之一建议分块读取大文件。

于 2013-04-14T16:30:40.333 回答