Как читать большие рабочие листы из больших файлов Excel (27 МБ +) с помощью PHPExcel?

У меня есть большие рабочие листы Excel, которые я хочу читать в MySQL с помощью PHPExcel.

Я использую недавний патч , который позволяет читать в рабочих таблицах без открытие всего файла. Таким образом, я могу читать по одному листу за раз.

Однако размер одного файла Excel составляет 27 МБ. Я могу успешно прочитать первый лист, поскольку он маленький, но второй лист настолько велик, что задание cron, которое запустило процесс в 22:00, не было завершено в 8:00, есть ли способ увеличить производительность toArray () ?

2011-01-12 11:40:51: ----------start
2011-01-12 11:40:59: reading chunk starting at row 2
2011-01-12 11:41:07: reading chunk starting at row 22
2011-01-12 11:41:14: reading chunk starting at row 42
2011-01-12 11:41:22: reading chunk starting at row 62
2011-01-12 11:41:29: reading chunk starting at row 82
2011-01-12 11:41:37: reading chunk starting at row 102
2011-01-12 11:41:45: reading chunk starting at row 122
2011-01-12 11:41:52: reading chunk starting at row 142
2011-01-12 11:42:00: reading chunk starting at row 162
2011-01-12 11:42:07: reading chunk starting at row 182
2011-01-12 11:42:15: reading chunk starting at row 202
2011-01-12 11:42:22: reading chunk starting at row 222
2011-01-12 11:42:22: end

Приложение 3

Кажется, это работает адекватно, например, по крайней мере, для файла 3 МБ :

for ($startRow = 2; $startRow <= 240; $startRow += $chunkSize) {
    echo 'Loading WorkSheet using configurable filter for headings row 1 and for rows ', $startRow, ' to ', ($startRow + $chunkSize - 1), '
'; $chunkFilter->setRows($startRow, $chunkSize); $objPHPExcel = $objReader->load('data/' . $file_name); debug_log('reading chunk starting at row ' . $startRow); foreach ($objPHPExcel->getActiveSheet()->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); echo ''; foreach ($cellIterator as $cell) { if (!is_null($cell)) { //$value = $cell->getCalculatedValue(); $rawValue = $cell->getValue(); debug_log($rawValue); } } } }

27
задан pnuts 4 September 2015 в 02:21
поделиться