Чтение PHPExcel слишком медленно

Я знаю, здесь много вопросов, связанных с улучшением производительности PHPExcel . Но все они касаются записи данных, и моя проблема заключается в чтении .

Моя функция:

 function parse($filename){ $objPHPExcel = PHPExcel_IOFactory::load($filename); $activeSheet = $objPHPExcel->getActiveSheet(); $parsedData = array(); $columnHeaders = array('order', 'ts', 'summ', 'name', 'quant', 'price', 'bccu'); foreach ($activeSheet->getRowIterator() as $rkey => $row) { $cellIterator = $row->getCellIterator(); foreach ($cellIterator as $ckey => $cell) { $parsedData[$columnHeaders[$ckey]] = $cell->getCalculatedValue(); } } return $parsedData; } 

Файл содержит ~ 300 строк и 7 столбцов. И этот скрипт не запускается через 30 секунд.

Как я могу улучшить его?

редактировать:

используемый

 $objReader = PHPExcel_IOFactory::createReader("Excel2007"); $objPHPExcel = $objReader->load($filename); 

без успеха

Если ваши столбцы уже определены, что вы хотите удалить итератор столбца?

Попробуйте что-то вроде этого:

 foreach ($activeSheet->getRowIterator() as $rkey => $row) { $rowIndex = $row->getRowIndex (); $parsedData[$rowIndex]['order'] = $activeSheet->getCell('A' . $rowIndex); $parsedData[$rowIndex]['ts'] = $activeSheet->getCell('B' . $rowIndex); $parsedData[$rowIndex]['summ'] = $activeSheet->getCell('C' . $rowIndex); . . . } 

Попробуйте отключить сборщик мусора перед запуском parse (), выпуская gc_disable() . Предполагая, что уровни итераций здесь не оптимизируются PHP.

Если вы не собираетесь изменять содержимое файла; настройка чтения только на чтение дает примерно 10-кратное повышение.

Например:

 $objReader = PHPExcel_IOFactory::createReader( 'Excel5' ); $objReader->setReadDataOnly( true );