SonkoDmitry
@SonkoDmitry
Веб разработчик

Парсинг XLS средствами PHP

Добрый день. Столкнулся с проблемой, необходимо сделать обновление каталога на сайте. Вся номенклатура приходит в виде XLS файлов. Из библиотек перепробовал и simple-excel и PHPExcel и spreadsheet-reader. Вторая проблема в том, что в каждом файле может быть несколько листов. Формул там не будет, поэтому необходимо минимальное простое средство для парсинга сего. Быть может кто-то наталкивался на удобные ридеры работающие с русским языком и несколькими листами в файле. Буду крайне благодарен.
  • Вопрос задан
  • 38537 просмотров
Пригласить эксперта
Ответы на вопрос 5
@Dialog
Из личного опыта парсинга:
github.com/faisalman/simple-excel-php — на эту не так давно наткнулся, еще не успел попробовать. Этой пользовались (иногда названия одни и те же используют)?
— можно обойтись экспортом из экселя в csv и тогда можно парсить из коробки.
Ответ написан
startsevdenis
@startsevdenis
PHPExcel умеет работать и с несколькими листами и с русским языком. В чем у вас с ним возникла проблема?
Ответ написан
@tushev
Еще документ Excel можно сохранить в каком нибудь XML-ном формате. Например в ODF-подобном (OpenOffice его также использует). При этом, в отличие от CSV, вы не потеряете листы, форматирование, формулы и т.д. Эта фича вроде бы во всех совеременных версиях Экселя присутствует по умолчанию. Дальше можете парсить такой файл на PHP через XML парсер, например SimpleXML.

Я так делал, потому что парсинг нативного Эксель формата на PHPExcel требовал оооочень много машинного времени и RAM. А описанный мной способ потребляет мало ресурсов и работает быстро.

P.S.: Пугаться ручного парсинга ODF XML-ки не стоит. Разобраться на уровне достаточном для чтения листов и значений можно за пол часа, даже без документации. Там все очевидно.
Ответ написан
shuchkin
@shuchkin
веб-программист, сисадмин, предприниматель
https://github.com/shuchkin/simplexls

if ( $xls = SimpleXLS::parse('book.xls') ) {
	print_r( $xls->rows() );
} else {
	echo SimpleXLS::parseError();
}

Array
(
    [0] => Array
        (
            [0] => ISBN
            [1] => title
            [2] => author
            [3] => publisher
            [4] => ctry
        )

    [1] => Array
        (
            [0] => 618260307
            [1] => The Hobbit
            [2] => J. R. R. Tolkien
            [3] => Houghton Mifflin
            [4] => USA
        )

)
Ответ написан
@karpovigorok
если есть проблемы с парсингом больших файлов, можете попробовать API для парсинга noxls.net/documentation
правда они хотят небольших денег
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы