PHP使用PHPexcel上传大文件xlsx时出错

时间:2017-01-27 08:56:43

标签: php memory-management phpexcel

我在aprox 130.000行(23MB)上传文件时出错。代码适用于小文件,但当我尝试上传较大的文件时,这个错误总会出现。我已经尝试了单元格缓存方法来减少内存使用,但错误仍然存​​在。在我的php.ini中,参数是memory_limit = 128M / upload_max_filesize = 64M / post_max_size = 64M。

Warning: simplexml_load_string(): Memory allocation failed in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): Entity: line 2: parser error : Memory allocation failed : xmlSAX2Characters in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): "><c r="I935190" s="9"/></row><row r="935191" spans="9:9" x14ac:dyDescent="0.25" in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): ^ in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): Memory allocation failed : building attribute in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): Memory allocation failed : building attribute in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): Memory allocation failed in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): Entity: line 2: parser error : Extra content at the end of the document in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652
Warning: simplexml_load_string(): "><c r="I935190" s="9"/></row><row r="935191" spans="9:9" x14ac:dyDescent="0.25" in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652

当我再次尝试上传时,它会出现:

Warning: simplexml_load_string(): Memory allocation failed : growing buffer in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652

Warning: simplexml_load_string(): Memory allocation failed : growing buffer in C:\xampp\htdocs\lib\PHPExcel\Reader\Excel2007.php on line 652

一段php代码,当我加载文件时,所有warnigs出现在第9行:

$total = count($_FILES["file"]["name"]);

for($j=0; $j<$total; $j++){


  $tmpFilePath =$_FILES["file"]["tmp_name"][$j];

  if ($tmpFilePath != ""){

    $newFilePath = 'ficheros/'. $_FILES["file"]["name"][$j];
  }
    if(move_uploaded_file($tmpFilePath, $newFilePath)){

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($newFilePath);

$sheetCount = $objPHPExcel ->getSheetCount();
$sheetNames = $objPHPExcel -> getSheetNames();

$objWorksheet = $objPHPExcel -> getSheetByName("Sheet1");

$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);

$rows = array();
for ($row = 2; $row <= $highestRow; ++$row) {
    for ($col = 0; $col <= $highestColumnIndex; ++$col) {
      $rows[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getCalculatedValue();

}

mysql_query..
}
}

提前致谢

0 个答案:

没有答案