Формирование отчетов в форматах MS Office без использования MS Office

Просто берет удивление, что до сих пор выкладываются статьи про программное формирование отчетов в MS Word или MS Excel. Тут сложно спорить. Выводить отчеты в данных форматах просто необходимо. Но вот если не из Delphi? А если необходимо сформировать клиенту на сайте счет и выдать на него ссылку или отправить его на почтовый адрес?

Можно и так. Давайте пойдем от обратного. Возьмем документ MS Excel и сохраним в формате «Веб-страница». Получаем документ с расширением html. Не будем обсуждать качество формирования кода. Давайте просто переименуем расширение в xls.
А может откроем этот файл? Запускается MS Excel Впрочем это неудивительно. А удивительно и приятно, что он вполне нормально открывается.
Все. Задача решена. Программно сформировать текстовый файл можно на любом языке программирования. Необходимо только соблюсти необходимые заголовки. А далее самый банальный HTML. Это настолько тривиально, что даже не буду приводить пример.
А перспективы? Вы практически имеете универсальный построитель отчетов. Получив, к примеру, объект «Заказ» в XML-формате при помощи наложения стилей можно предоставить пользователю выходной документ в режиме он-лайн в виде простой html-странички или в офф-лайн в виде документа MS Word или MS Excel.

Продолжение поста:
Формирование документов Word и Excel на сервере Django
MS Word и web-фреймворк. Продолжение

4 комментария:

Анонимный комментирует...

а как можно ограничить глубину сканирования...? Допустим ограничится только сканированием 3 подкаталогов?

Анонимный комментирует...

А если заказчик использует ОпенОфис ?
Такое счас уже не редкость. Такие отчёты у него могут и неоткрытся....

webveter комментирует...

Попробуй. Документ открывается и в ОпенОфис. По сути пока документ не "сохранить как" в формате Word или Excel он будет отформатирован как HTML. Но главное, что сохраняется требуемое форматирование.
На блоге есть примеры.

Анонимный комментирует...

Классный скрипт, правда удобен скорее для отчета чем для аудита.
Было бы классно формировать таблицу где в заголовках столбцов будут все группы и пользователи упоминаемые при назначении прав, а в заголовках строк вся древовидная структура каталогов, так чтобы каждый элемент был только один раз, ну и в ячейках таблицы собственно права доступа (L,F, RW, R и т.п.)