for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Обсуждаем проекты
  

Генерация отчета в HTML (с картинками)
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата: 06.10.10 09:28:33
Сделал новую версию 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



Исправлено: maple4, 06.10.10 09:29
Ratings: 0 negative/0 positive

Re: Генерация отчета в HTML (с картинками)
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата: 07.10.10 10:11:40
Как обычно, шквал мнений, советов и оценок

Обратите внимание на появившуюся возможность создания живых отчетов (кто работал с 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
Ratings: 0 negative/0 positive

Re: Генерация отчета в HTML (с картинками)
maple4
Автор

Сообщений: 210
Откуда: Москва
Дата: 08.10.10 12:24:34
Обновил версию до 2.4 (Report Generator) - в части работы с бланками HTML/HTM

1. Добавил вывод сообщений о строке, вызвавшую ошибку в RG (одновременно с генерацией в error_report_generator.txt)
2. Убрал ошибку, возникающую при обработке HTML-бланка (Word вставляет ненужный код - &nbsp; вместо пробела)
3. Ну, и самое главное, Сделал пример с генерацией ВСЕХ дополнительных отчетов (во время генерации основного - формируются отчеты/страницы по Интернет).
По сути, получилась программа для генерации сайта из бланков HTML (конкурент Site Creator-а)
И теперь подчиненные отчеты открываются в любом браузере.

zip-архив проекта:
www.maple4.ru

Страница описания работы с бланком HTML/HTM:
www.maple4.ru

Страница описания работы с rb (создание/редактирование rb-репорта в rb_edit.exe):
www.maple4.ru

страница проекта в Интернет:
www.maple4.ru
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 10 Божья_коровка  (Гостей: 9)

© 2000-2021 Fox Club 
Яндекс.Метрика