PHP чтение большого Excel файла

Страшный Злодей

Бывший член клуба (достало хамство).
PHP чтение большого Excel файла

Несколько лет мой скрипт исправно трудился, ежедневно обновляя базу данных MySQL. Источником обновления служил Excel файл, который создаётся внешней проприетарной программой на чужом компе под Виндой (т.е. формат изначального Excel файла не изменить). Но файл рос и с неданих пор, скрипт перестал справляться в виду того, что на хостинге, где он расположен, установлен лимит использования памяти 32Mb. Скрипт мой использовал, не безизвестный "phpExcelReader". Вот теперь думаю, что делать? Думаю копать в сторону того, чтобы excel файл обрабатывать по частям, например по 1000 строк, но как тогда его выдавать порциями, не в ручную же "распиливать"? В самой тулзе - phpExcelReader, я не нашёл, где можно задать количество обрабатываемых строк, она, похоже в любом случае разбирает весь файл (и естественно вылетает в виду того, что весь его пихает в память). Копать в сторону изучения внутренних форматов экселя, совсем не охота. Есть ли варианты и решения? Может кто сталкивался с таким траблом, а может есть какой-нибудь готовый скрипт, который мне поможет?
 

jonjonson

Охренеть
Отписать загрузку из csv формата. Издать на фирме приказ, о сохранении excel файла в csv формат перед загрузкой на сайт. Провести обучение с белыми воротничками.

Ну или писать свой phpExcelReader на основе спецификации устройства бинарных файлов excel.
 

Страшный Злодей

Бывший член клуба (достало хамство).
jonjonson
Да, ушшшш... Я специально, в первом посте обозначил, что эти способы не допустимы. Просто поверьте, что не всегда у Вас есть возможность издавать приказы...
 

DiMA

php.spb.ru
Команда форума
большие файлы ни одна пхп либа обрабатывать не может, отжирает дико памяти, подвисает минут на 5-10, просто зависает

единственный выход, и он же быстрее в 10-50 раз: через СОМ конвертнуть в csv и потом считать
 

Страшный Злодей

Бывший член клуба (достало хамство).
DiMA
Не будте столь уверены в своей неправоте и пессимистичны...
Если реализовать возможность поточной обработки, то размер файла побоку - знай считывай по частям и обрабатывай.

А я тем временем нашел кое-что - http://code.google.com/p/php-excel-reader/ , здесь модернизированная версия той же тулзы, что я использую. Есть возможность опционально экономить память, добавляя параметр "false" в строку подключния файла, таким образом:
Код:
$xls = new Spreadsheet_Excel_Reader("База.xls",false);
Но в этом скрипте свои тараканы, так-что изучаю и обтачиваю напильником.
Вобщем, пляски продолжаются. Если кто что-нибудь умное подскажет, буду благодарен.

-~{}~ 21.03.09 15:34:

Параллельно изучаю - http://genrep.nm.ru/xls/xls.htm

-~{}~ 21.03.09 15:36:

ненавижу закрытые форматы... >8-\

-~{}~ 21.03.09 15:39:

Когда их уже на законодательном уровне запретят? Сорри за офтоп... накипело...

-~{}~ 21.03.09 15:48:

Ааааа! Как все запутано с этим xls! Кто бы вирь написал, чтобы на всех компах вдруг в один день все xls во что-то более документированное превратились? Сказка млин... ложь, да в ней намёк, добрым молодцам урок!
 

DiMA

php.spb.ru
Команда форума
ну что, обломался 50-метровые файлы пыхом читать? :)
 

TutanXamoN

Новичок
Угу принудили. Если разбирать структуры последних бифов можно мозгом тронуццо.

ЗЫ: Я когда встал подобный вопрос и люди взбунтовались против csv вежливо поинтересовался кто заинтересован в работоспособности системы. Проблема решилась.
 

dimagolov

Новичок
Страшный Злодей, да замечательно он выглядит. дамп памяти Excell-я, который своей струкутрой восходит во времена 386-х компов.
 
Сверху