Генерация отчета в HTML (с картинками) | |
---|---|
maple4 Автор Сообщений: 210 Откуда: Москва Дата регистрации: 26.10.2007 |
Сделал новую версию Maple4 Report Generator - теперь с поддержкой бланков в формате HTML/HTM.
Думаю, хоть раз кто-то делал следующее - брался некий html-ный файл, а уже в нем, вместо заранее внесенных тегов размещались поля таблиц/курсоров, значения функций и переменных. Все потому, что html-формат достаточно прост для понимания, а для его редактирования можно воспользоваться обычным Блокнотом. Плюс, огромные возможности для реализации любой задумки, например, несколько таблиц в одном отчете - это вовсе тривиальная задача Есть подводные камни. Например, Word от Microsoft постоянно норовит разместить дополнительные <span>-ы прямо в теге, поэтому приходится либо перед генерацией дополнительно обрабатывать бланк, либо отказываться от редактирования уже готового бланка Word-ом, пользуясь только Блокнотом. Или, например, размещение своей таблицы в документе. Вроде бы ничего сложного (<table><tr><td></td></tr></table>), но ЕЙ-БОГУ иногда замучаешься правильно подобрать ширину колонок, шрифт, размер, цвет и другие параметры таблиц. А ведь еще хочется итогов, выделения этих итогов/подитогов и многого другого. В общем, в какой-то момент наступает понимание, что двигаешься не туда , и руки опускаются (точнее, постепенно несколько охладеваешь к тому, что казалось достаточно простым). Что предлагаю я? I. Есть некий шаблон в формате html. Вы его редактируете каким-либо образом (Word, OO Writer, Блокнот и т.д.) и размещаете в его теле специальные теги - некий текст, ограниченный ` и ` с двух сторон. Пример тега: `&test_.saldo` - значение поля saldo курсора-селекта/таблицы test_ или `&date()` - значение функции date(), которая возвращает текущую дату или, код foxpro: ` local ii ii=datetime() return ii ` II. Если необходимо разместить в документе таблицу (с шапкой, группировками, итогами/подитогами, вставкой строк по условию и т.д.) - в специальной программе (report builder - из программы rb_edit.exe) создается ее дизайн, а в шаблоне, в коде тега, дается команда на использование этой таблицы при генерации документа. Например, ` Select * from test into cursor test_ return rb("svodno_saldo_rb.m4rb")` Смысл вышеприведенного кода - получение курсора из test и запуск генерации таблицы по нему. Курсор test_ может быть создан ранее, главное, что бы он был выбран в момент запуска rb После этого запускаете генератор, выбираете шаблон и получаете готовый документ с размещенной таблицей (и даже не одной) внутри документа! Чем хороша именно такая схема создания (шаблон+report builder)? 1. Редактируя шаблон в Word или Open Office Writer Вы можете не бояться того, что тег будет изменен - на работу тега это никак не отразится. 2. Таблица, созданная в report builder (rb) может применяться в других html-шаблонах (и, кстати, вид таблицы на html-странице ТЕОРЕТИЧЕСКИ не зависит от браузера). 3. Таблица, созданная в rb, может разместить в своем коде другую таблицу (вложенная таблица), которая может строиться на совершенно другом селекте/курсоре. Есть некоторые минусы использования бланка html: 1. Несколько больший размер получаемого документа по сравнению с ods и odt - ну что ж Вы хотите, по сути ods и odt - это все таки zip-архивы 2. Документ html может по разному отображаться в разных браузерах - от этого никуда не деться, конкуренция блин. 3. Документ, созданный в Word, Open Office Writer наверняка постарается изменить, и, возможно, не в лучшую сторону. Как и наоборот, впрочем, когда документ, созданный Open Office Writer-ом, пытается открыть на редактирование Word. И это не смотря на то, что используется одно расширение - html/htm Плюсы создания отчетов на основе бланков html: 1. Бланк создается/редактируется либо визуальным редактором (Word, oo Writer и т.д.), либо, например, тем же Блокнотом. 2. Нет проблем с изменением тегов Word-ом или oo Writer-ом, генератор правильно определит, что является тегом. Ну и, правильно вставит вместо тега нужный текст. 3. Построение и вставка простых и сложных таблиц (Report Builder) с итогами по группам (+ с возможностью генерации подчиненных таблиц) без ограничения на количество в отчете. 4. Автоматический сбор картинок, используемых в отчете, в папку отчета (для простоты копирования) - причем как картинок бланка, так и картинок, генерируемых rb! 5. Редактирование дизайна таблицы в отдельной программе - считаю это плюсом (возможность вставки в другие бланки или в другие rb-репорты)! Отличие генерации на основе HTML-шаблонов от генерации на бланках других форматов (xml, ods, odt) 1. Теги размещаются непосредственно в теле документа, между ` и `, а НЕ В КОММЕНТАРИИ, так как: а) в Word невозможно ТОЧНО разместить комментарий в нужном месте и б) форматы комметариев в Word и oo Writer несколько различаются, не смотря на то, что используется один формат HTML Особенность разработки Html-бланков и репортов rb. 1. Если Вы используете rb-репорты (файлы с расширением m4rb и одноименными каталогами) - ОНИ ОБЯЗАТЕЛЬНО ДОЛЖНЫ находиться в каталоге запуска генератора отчетов (т.е. там же, где находится файл m4rg.exe)! 2. Генератор НЕ АНАЛИЗИРУЕТ сами стили (только - готовый html-файл), поэтому не создавайте html-бланк со стилем в подпапке! Целая куча exe-файлов... За что отвечает каждый из них? m4rg.exe - генератор отчетов (задаете бланк - получаете отчет) rb.exe - программа формирования таблицы в html при помощи rb-репортов (используется для генерации отчетов на основе бланков HTML). rb_edit.exe - надстройка, позволяющая создавать и редактировать rb-репорты прямо из проводника (для генерации в HTML-бланках). Если Вы хотите создать/отредактировать rb-репорт - запустите rb_edit.exe 7za.exe - zip-архиватор Ну, и, напоследок... Претензии к Open Office Writer (о как ) 1. Я не понимаю, ЗАЧЕМ надо в теле html-документа превращать имя рисунка (точнее, каталога, где он находится), написанное на русском в esc-последовательность (Word это делает только со знаками до пробела). Впрочем, может это IE виноват? Как и Word, заодно? ПОЧЕМУ IE не отображает картинку, русские буквы которого замененены на esc-последовательность? Обратите внимание, что готовый отчет по бланку отлично отображается как в Mozilla FireFox, так и в IE (так работает генератор). Но это все работает только до первого изменения oo Writer-ом . После чего в IE отображаются пустые окна от рисунков. 2. Для Word-а html-формат - это попытка Microsoft как можно лучше отобразить doc-документ (не смотрите на расширение) прямо на странице в Интернет. Да, это не чистый HTML, да код излишний... и все же считаю, что попытка удалась. Doc-документ, сохраненный в html, практически не отличается от оригинала (если не использовать уникальные способности Word!) Страница описания работы с бланком HTML/HTM: http://www.maple4.ru/readme_html.htm Страница описания работы с rb (создание/редактирование rb-репорта в rb_edit.exe): http://www.maple4.ru/readme_rb.htm Загрузка архива (генератор, rb, rb_edit, конвертер, бланки шаблонов - в том числе шаблоны html, созданные в Word и OO Writer, DLL и файлы помощи): www.maple4.ru Исправлено 1 раз(а). Последнее : maple4, 06.10.10 09:29 |
Re: Генерация отчета в HTML (с картинками) | |
---|---|
maple4 Автор Сообщений: 210 Откуда: Москва Дата регистрации: 26.10.2007 |
Как обычно, шквал мнений, советов и оценок
Обратите внимание на появившуюся возможность создания живых отчетов (кто работал с 1C - поймет). Довольно интересная штука, которая реализуется достаточно легко - просто необходимо написать код реакции на клик в ячейке rb-репорта (в примере уже есть). Обновил версию генератора (Maple4 Report Generator 2.3). Что нового: I. Исправил ошибку, которая возникала при генерации пустого отчета. II. Теперь есть возможность создания "живых" отчетов, т.е. кликаете на ссылку в отчете - открывается следующий и так далее. Для этого в Report Builder-е для нужной ячейки нужно задать текст ссылки, при нажатии на которую будет формироваться следующий отчет. И соответствующим образом запустить генерацию отчета. В rb-репорте svodno_saldo_rb.m4rb (редактируется из rb_edit.exe) текст такой ссылки задается для ячейки фамилии по услуге Интернет. Кликнув по ячейке другой кнопкой, выберите в меню Edit/Cell/Click - откроется форма редактирования генерируемой ссылки, а в ней будет находиться следующий текст: "VFP:///LOCAL s_ s_=SELECT() SELECT * FROM phone WHERE user_id=`&alltr(str(test_.user_id))` INTO CURSOR phonek do m4rg.exe with 'phone_for_user.html','',-1 SELECT (s_)" VFP:/// - указание обозревателю обработать ссылку, как процедуру FoxPro (при клике) SELECT * FROM phone WHERE user_id=`&alltr(str(test_.user_id))` INTO CURSOR phonek - текст формирования курсора из phone `&alltr(str(test_.user_id))` - в момент формирования основного отчета вместо тега запишется текущий test_.user_id do m4rg.exe with 'phone_for_user.html','',-1 - запуск генерации детализированного отчета по курсору и открытие его в специальном обозревателе. Обратите внимание на -1 в конце! Если этого не сделать (не поставить -1) - сформированный отчет будет открыт в браузере по умолчанию. Обратите внимание - текст ДОЛЖЕН НАЧИНАТЬСЯ и ЗАКАНЧИВАТЬСЯ ДВОЙНЫМИ КАВЫЧКАМИ (а двойных кавычек не должно быть внутри)! Далее, надо запустить генерацию основного отчета в виде (обязательно с -1 в конце!): DO m4rg WITH "test_lists_html_word.html","test_live_report.html",-1 В ИНОМ случае (если не будет -1) - отчет откроется в браузере по умолчанию, даже не смотря на название III. HTML-отчет теперь можно отправить на печать СРАЗУ после генерации - без открытия предпросмотра и без выбора принтера (принтер по умолчанию). Для этого, надо запустить программу следующим образом (обратите внимание на -2): DO m4rg WITH "test_lists_html_word.html","test_report.html",-2 Никаких дополнительных программ (и даже наличия Open Office) для данной операции не требуется. zip-архив проекта: www.maple4.ru Страница описания работы с бланком HTML/HTM: http://www.maple4.ru/readme_html.htm Страница описания работы с rb (создание/редактирование rb-репорта в rb_edit.exe): http://www.maple4.ru/readme_rb.htm страница проекта в Интернет: http://www.maple4.ru/xmlbuilder.htm |
Re: Генерация отчета в HTML (с картинками) | |
---|---|
maple4 Автор Сообщений: 210 Откуда: Москва Дата регистрации: 26.10.2007 |
Обновил версию до 2.4 (Report Generator) - в части работы с бланками HTML/HTM
1. Добавил вывод сообщений о строке, вызвавшую ошибку в RG (одновременно с генерацией в error_report_generator.txt) 2. Убрал ошибку, возникающую при обработке HTML-бланка (Word вставляет ненужный код - вместо пробела) 3. Ну, и самое главное, Сделал пример с генерацией ВСЕХ дополнительных отчетов (во время генерации основного - формируются отчеты/страницы по Интернет). По сути, получилась программа для генерации сайта из бланков HTML (конкурент Site Creator-а) И теперь подчиненные отчеты открываются в любом браузере. zip-архив проекта: www.maple4.ru Страница описания работы с бланком HTML/HTM: www.maple4.ru Страница описания работы с rb (создание/редактирование rb-репорта в rb_edit.exe): www.maple4.ru страница проекта в Интернет: www.maple4.ru |
© 2000-2024 Fox Club  |