Комментарии 23
НЛО прилетело и опубликовало эту надпись здесь
<source lang="php"></source>
+11
Спасибо! Как раз кстати. Ну, конкретно с этой проблемой ещё не столкнулся, ибо пока работал только с файлами на 12-13 тыс. строк, но не помешает на будущее.
0
Могу добавить, что лично я сталкивался с файлами куда больше и, например, кеширование в memcached уже не спасало, по скольку все-рано не хватало памяти.
В последней версии библиотеки есть кеширование в sqllite — весьма медленно, но надежно и спасает от всех проблем с памятью.
В последней версии библиотеки есть кеширование в sqllite — весьма медленно, но надежно и спасает от всех проблем с памятью.
0
Столкнулся с проблемой нехватки времени на выполнение скрипта. На хостинге было всего 10 секунд. PHPExcel не успевал сделать
$objPHPExcel = $objReader->load($fileName);
Пришлось использовать какую-то библиотеку в два файла (что-то типа Excel Reader). Она за 10 секунд успевает прочитать файл и обработать 5 строчек. 0
Для чтения можно воспользоваться консольной утилитой
xlhtml
, преобразовать в CSV, и читать построчно, в итоге мало кода, быстро работает, малый расход памяти, из минусов — требует разрешения использования функции exec()
.0
А у меня часто вставала проблема не с чтением больших Excel файлов а с их формированием. PHPExcel потребляет слишком много памяти и времени для создания большого Excel файла. Так что я отказался от его использования в подобных случаях и формирую XML ODF файл вручную, а он прекрасно читается Excel-м.
В принципе это не так уж и страшно. Во первых есть хорошее описание этого формата и его майкросовтовского расширения, а во вторых можно просто сохранить шаблон Экселя в виде XML, а потом сделать свой файл о образу и подобию.
В принципе это не так уж и страшно. Во первых есть хорошее описание этого формата и его майкросовтовского расширения, а во вторых можно просто сохранить шаблон Экселя в виде XML, а потом сделать свой файл о образу и подобию.
0
После того как у меня начались проблемы с памятью и скоростью начал искать другое решения и нашел решение модулем к php, как следствие скорость работы и проблемы с памятью пропали само расширение тут github.com/iliaal/php_excel оно использует библиотеку libxl она конечно платная но того стоит, будут вопросы пишите…
0
1. почему именно 13?
2. unset($objReader); в цикле, на следующей итерации цикла объект не найден $objReader
3. if ($_SESSION['startRow']) тут добавить isset
else $startRow = 13;
2. unset($objReader); в цикле, на следующей итерации цикла объект не найден $objReader
3. if ($_SESSION['startRow']) тут добавить isset
0
Вместо "//Что-то с этими строками делаем" рекомендую следующую конструкцию, пропускающую пустые строки в начале
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator($startRow, $chunkSize);
foreach($rowIterator as $row) {
$cellIterator = $row->getCellIterator();
$col=Array('idx'=>$row->getRowIndex());
foreach($cellIterator as $cell)
$col[$cell->getColumn()] = $cell->getCalculatedValue();
}
0
PHPExcel жрет память десятками мегабайт даже с настройками кэширования в файл!
Эта библиотека — настоящий кошмар разработчика.
Рекомендую сразу отказаться от нее.
Эта библиотека — настоящий кошмар разработчика.
Рекомендую сразу отказаться от нее.
0
Есть ли другая библиотека для работы с xls файлами и такая же функциональная?
0
https://github.com/mk-j/PHP_XLSXWriter
не настолько функциональная, но именно при генерации больших файлов — работает отлично.
так и пишут сами:
не настолько функциональная, но именно при генерации больших файлов — работает отлично.
так и пишут сами:
Never run out of memory with PHPExcel again.
0
На сколько я понял, данное решение, как таковое — не является «фильтром» частичной загрузки файла.
->load — всё равно загружает полностью весь файл, с тем лишь различием, что в переменную $objPHPExcel сохраняется определенное кол-во строк.
$objPHPExcel = $objReader->load($fileName);
->load — всё равно загружает полностью весь файл, с тем лишь различием, что в переменную $objPHPExcel сохраняется определенное кол-во строк.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
PHPExcel и большие файлы