Наверняка любой php программист сталкивался с ситуацией, когда заказчик просит “экспорт товара из экзеля” или чего бы то ни было. И стон идет по всей земле русской (и нерусской)…
Первое, что приходит в голову – это каждый раз запускать Excel и сохранять файл в формате CSV, с которым php уже намного легче работать. Это – замечательное решение, когда число файлов меньше 10 и все они состоят только из одной страницы (поскольку экзель может экспортировать в CSV только страницы, те результат конвертации файла из 10 страниц будет 10 CSV файлов).
Вторая мысль: скачать какую-нибудь софтину, которая бы преобразовывала набор Excel файлов в CSV, включая все страницы. Но, погуглив чуток, сразу видно, что софтины эти все сплошь коммерческие. Можно, конечно, сломать.
Но есть и другой пусть: написать самому. Это очень легко реализуется, если использовать javascript и ActiveX компонент Excel.Application:
Этот скрипт необходимо поместить в папку с набором XLS файлов, создать папку output и tmp и набрать в коммандной строке:
cscript xls2csv.js
По завершении работы скрипта в output у нас появятся искомые CSV файлы, папку tmp можно почистить.
Для генерации Excel файлов на сервере я предпочитаю легкий класс ExcelWriter, написанный индусом Harish Chauhan-ом, тяжелому PEAR-овскому пакету Spreadsheet Excel Writer-у.
Tags: convertion, cscript, CSV, Excel, Excel Writer, javascript, php, XLS
а не могли бы разжевать чуток насчёт ActiveX компонент Excel.Application? или сказать где посмотреть информацию. я чтото ничево не добился с js-файликом, вообще ничево не выдаёт мне
dominoid
> а не могли бы разжевать чуток насчёт ActiveX компонент Excel.Application?
э… что именно разжевать? Компонент предоставляет интерфейс для работы с экзелевскими файлами. Как с ним работать и пр. – гугль лучше расскажет.
> я чтото ничево не добился с js-файликом
Ошибки в студию? Кстати, содержимое файла нужно сделать содержимым функции и вызывать ее (там есть return, понятно, что в таком виде может и не заработать). А вообще эта статья – просто описание подхода, а не готовое решение.