Ich lade eine sehr kleine Excel-Datei mit einer Größe von 10 KB (40 Zeilen & 18 Spalten) mit PHPExcel, aber es gibt mir immer Speichergröße Fehler. Ich weiß, dass die Dateigröße sehr klein ist, daher ist etwas im Code falsch, aber nicht in der Lage, herauszufinden.PHP Excel Fehler - Erlaubte Speichergröße von 134217728 Bytes erschöpft
ini_set('memory_limit', '-1');
$this->load->library('PHPExcel');
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array(' memoryCacheSize ' => '8MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$data = excelToArray($upload_filename);
habe ich eine Funktion, um den Dateiinhalt in ein Array zu laden und konvertieren:
function excelToArray($filePath, $header=true){
//Create excel reader after determining the file type
$inputFileName = $filePath;
/** Identify the type of $inputFileName **/
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
/** Create a new Reader of the type that has been identified **/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/** Set read type to read cell data onl **/
$objReader->setReadDataOnly(true);
/** Load $inputFileName to a PHPExcel Object **/
$objPHPExcel = $objReader->load($inputFileName);
//Get worksheet and built array with first row as header
$objWorksheet = $objPHPExcel->getActiveSheet();
//excel with first row header, use header as key
if($header){
$highestRow = $objWorksheet->getHighestDataRow();
$highestColumn = $objWorksheet->getHighestDataColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 3; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading) {
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}
}
else{
//excel sheet with no header
$namedDataArray = $objWorksheet->toArray(null,true,true,true);
}
return $namedDataArray;
}
ich es verengt haben versucht, folgende Zeile nach unten, wo das Skript fehlschlägt:
$objPHPExcel = $objReader->load($inputFileName);
Ein weiterer wichtiger Punkt, Dieser Code funktioniert gut auf localhost, aber Fehler auf godaddy Server geben.
Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und ** den kürzesten Code ** enthalten, um ihn in der Frage selbst zu reproduzieren. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels.] (Http://stackoverflow.com/help/mcve) – Farside