Задать вопрос

Чем читать excel файлы в PHP?

Доброго времени суток, на самом деле вопросов несколько.
Суть задачи в том что бы получить данные из excel файла, созданного в 1C, с помощью PHP и положить в базу.
Phpexcel и PhpSpreadsheet не могут загрузить некоторые из файлов, причем если одна библиотека грузит нормально, то вторая не факт что это сделает, применять их в конкретных случаях я не могу, потому как один и тот же пользователь может грузить 2 на первый взгляд одинаковых файла, а разница, которую перехватить не получается, может не позволить это сделать, причем если файлы "пересохранять" в MS Excel то все нормально, но заставлять пользователей это делать я не могу, пробовал EasyXLS, платность отталкивает заказчика.
Вопрос - есть ли еще библиотеки для чтения таблиц? Напомню что файлы формирует 1С.
Вопрос 2 - Я еще не пробовал GoogleSheets, устал терять время, и решил спросить, возможно ли через этот сервис не выгружая в GoogleDocs читать файлы, информации найти не могу...
  • Вопрос задан
  • 8447 просмотров
Подписаться 4 Средний 9 комментариев
Решения вопроса 1
Попробуйте перед работой с файлом пересохранить его в xlsx (или вовсе в csv, с которым точно не будет проблем)
Мы использовали для этой цели утилиту unoconv (по сути, LibreOffice). Конвертировали xls и xlsx от клиентов в csv, т.к. работа с xlsx начала требовать уж очень много ОП и времени с использованием указанных вами библиотек.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Не знаю, в каком формате 1с формирует файлы, но если это .xlsx - то это zip-архив обычный. Откройте его и поковыряйтесь в xml-ках, посмотрите что там и где хранится.
Ответ написан
@gsur Автор вопроса
Пока существуют файлы .xls .xlsx .xlsb, Phpexcel как раз .xlsx этим методом и открывает, но однажды массив с результатом пришел пустым, потратив уйму времени на вычислении момента где данные пропадают, нашел что строка simplexml_load_string как раз таки и возвращает "ничего", не знаю возможно ли копать глубже, открывая "не читаемый" файл из 1С и его пересохраненную версию из MS Excel в простом текстовом редакторе(xml-ы из архива) не нашел разницы, однако результат чтения первого пуст, второй в полном объеме.
Ответ написан
Комментировать
Комментировать
artzolin
@artzolin
php, WordPress разработка сайтов artzolin.ru
Еще один вариант — библиотека SimpleXLSX. Базовое использование очень простое:

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


Еще пример тут
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы