Pull to refresh

Генерация документов. Легко и свободно

Reading time 2 min
Views 5.9K
Продолжая тему генерации документов на основе шаблонов, я хочу обсудить создание документа, в котором кроме относительно постоянных частей есть части, вид и содержание которых целиком зависят от данных. Т.е. речь не идет о тривиальном заполнении полей или простых таблиц. Речь идет о таблицах с разнообразной фактурой, с различным количеством колонок под одной шапкой и сам вид таблицы определяется данными.

Для реализации такого документа в шаблоне можно заранее определить отдельные возможные строки таблицы, дать им имя, а затем из этих строк собирать таблицу так же, как бусинки насаживаются на нить, как нити укладываются слой за слоем в ткань с требуемым узором.
В процессе генерации эти вспомагательные строки удаляются из документа. Какая именно строка должна быть вставлена в документ определяется по ее имени. Именованная строка не обязательно должна быть строкой таблицы, это может быть текст с нужными атрибутами отображения.

Таким образом можно собрать документ, где текст чередуется с разнообразными таблицами. В шаблоне задается помимо именованных строк место, откуда начинается построчная печать. Задача программиста в данном случае сводится к формированию XML, в котором помимо данных будет указано, какой строкой их отображать. Т.о. достигается почти полное (только имя строки задает формат) разделение данных от их представления. И что приятно, имена строк могут быть осмысленными, а генерация происходит быстро.

В заключение хочу добавить, что мест в шаблоне, куда надо впечатывать строки с данными, может быть несколько. Каждое место имеет свое имя (идентификатор). В XML с входными данными необходимо передавать в определенном тэге это имя перед тем как печатать строка за строкой данные. Естественно, данные для печати должны быть отсортированы в порядке следования строк.
Tags:
Hubs:
-9
Comments 22
Comments Comments 22

Articles