Поиск по сайту:

Парсинг файлов MS Excel с помощью PHP

Парсинг файлов MS Excel с помощью PHP

06.05.2013

Просмотров: 8897


Наконец-то решена очередная задача: чтение таблиц формата MS Excel при помощи PHP. Ниже кратко расскажу, как это удалось сделать.

Для начала, после не слишком продолжительных поисков остановился на библиотеке PHPExcel (которую можно скачать здесь). Что это такое? Говоря кратко, это PHP-код, который необходимо разместить в той же папке, что и файлы сайта или системы чтения Excel-файлов, и индексный файл которой с наименованием «PHPExcel.php» перед чтением Excel-файлов необходимо подключить в соответствующем PHP-скрипте чем-то вроде include или require (а ещё лучше require_once).

Вызов конструктора чтения я предпочёл осуществить при помощи строки

$objPHPExcel = PHPExcel_IOFactory::load("имя Excel-файла");

согласно рекомендациям руководства как универсальный метод парсинга Excel-файла при отсутствии информации о том, в каком формате он будет загружен.

Однако почти сразу же наткнулся на очень острый подводный камень. Дело в том, что помимо формата XLS, формируемого старыми версиями MS Excel, существует ещё и XLSX (версия Excel 2007). Второй формат, в отличие от первого, требует для парсинга подключенной ZIP-библиотеки PHP. При отсутствии этой библиотеки разработчик видит на экране что-то типа «Fatal error: Uncaught exception "Exception" with message "ZipArchive library is not enabled"...».

Пришлось разбираться. В настоящее время использую пакет PHP-разработчика Denwer версии 5.2.12. Методом массированного коврового гуглопоиска выяснил, что для установки соответствующей ZIP-бибилотеки необходимо скачать отсюда набор библиотек в виде exe-файла, после чего запустить экзешник с целью установки библиотек. Предварительно, разумеется, не забываем остановить Денвер (запуском утилиты с адресом «папка с Денвером/denwer/Stop.exe»): если он запущен, набор библиотек не установится. Кроме того, у меня установщик библиотек при автоматическом поиска папки с Денвером вначале обнаружил последний на созданном Денвером виртуальном диске, запросил разрешения установиться туда, и естественно, получил от меня отказ. А второй найденной локацией оказался уже физический диск с Денвером. После скачивания и установки библиотек нужные следовало активировать, в моём случае это была всего одна библиотека PHP_ZIP, для активации которой нужно было залезть по адресу «папка с Денвером/usr/local/php5/», найти в ней конфигурационный файл под названием «php.ini», в нём отыскать строку «extension=php_zip.dll», раскомментировать её (для чего удалить точку с запятой в начале строки) и сохранить конфигурационный файл.

Ну и в результате всех этих манипуляций в награду после запуска Денвера и соответствующего скрипта чтения Excel-файлов я увидел на экране массив данных. Но это уже другая история.


Автор сайта


Комментарии

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

14.03.2014 13:26 Комментирует Мунира:

tanx ;)

26.02.2015 22:00 Комментирует Леха:

PHP_ZIP есть уже в последней сборке.А проверка и загрузка делается:$inputFileType = PHPExcel_IOFactory::identify($filepath); // узнаем тип файла $objReader = PHPExcel_IOFactory::createReader($inputFileType); // создаем объект для чтения файла $objPHPExcel = $objReader->load($filepath); // загружаем данные файла в объект $array = $objPHPExcel->getActiveSheet()->toArray(); // выгружаем данные из объекта в массив

20.01.2016 16:41 Комментирует HighMan:

Лучше было бы выложить PHP скрипт, который читает файл, загружает массив, выводит загруженный массив на страницу.А в пояснении указать как работать с XLSX.


© Taxpert. Интернет-мастерская М. Ю. Уткина.