Быстрый парсинг XLS с помощью xlhtml


Мне часто приходится иметь дело с парсингом файлов .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, за очень разумное время ссылка

Добавить комментарий