Мне часто приходится иметь дело с парсингом файлов .xls, для этого я использовал всегда PHPExcel. Но у этой утилиты есть минус — для больших файлов она очень медленная!
xlhtml
xlhtml — простая программка, которая делает всю работу за секунду! Она умеет конвертировать xls в csv, а csv в свою очередь быстро парсится с помощью PHP. На шаред-хостинге ее скорее всего установить не получиться…
Для установки в консоли прописываем: apt-get install xlhtml
Вот описание параметров:
# xlhtml [-a] [-asc] [-csv] [-xml] [-bcNNNNNN] [-bi/path] [-c] [-dp] [-v] [-fw] [-m] [-nc] [-nh] [-tcNNNNNN] [-te] [-xc:N-N] [-xp:N] [-xr:N-N] FILE где опции -a агрессивная оптимизация html для удаления </TR> </TD> или VALIGN="bottom". Некоторые старые браузеры могут не отображать правильно. -asc Ascii out of -dp and extraction data (-xc, -xp, -xr) -csv Output in Comma Separated Values of -dp and extraction data (-xc, -xp, -xr) -xml Output in XML of -dp and extraction data (-xc, -xp, -xr) -bc Override the background color. e.g. -bc808080 for gray -bi Use background image. e.g. -bi/home/httpd/icon/tar.gif -c Centers the tables horizontally -dp Dump page count and max columns and rows per page -v вывести версию программы -fw suppress formula warnings about accuracy -m No encoding for multibyte -nc tells it not to colorize the output. -nh Suppress header and body tags in html output -tc Override the text color. e.g. -tcFF0000 for red -te Trims empty rows & columns at the edges of a worksheet -xc Columns (separated by a dash) for extraction (zero based) -xp Page for extraction (zero based), one page only -xr Rows (separated by a dash) to be extracted (zero based)
Пример использования:
Пропарсить первый лист файла test.xls в PHP:
exec("xlhtml -xp:0 -csv test.xls > new.csv");
В результате в дериктории рядом с файлом test.xls появляется файл new.csv, который удобно пропарсить функцией fgetcsv().
Можно ограничить столбцы параметром -xc:3-7 и строки -xr:1-19
Правда я заметил один жирный минус — МАКСИМАЛЬНОЕ КОЛИЧЕСТВО СТРОК, КОТОРОЕ МОЖНО СЧИТАТЬ ИЗ ФАЙЛА : 32768. Но обычно файлы меньше.. пользуемся)
Вышла новая статья для быстрого парсинга XLS, за очень разумное время ссылка