4.2.3. Шаблоны DOCX, DOC и ODT

Шаблоны DOC и DOCX создаются с помощью Microsoft Office или OpenOffice / LibreOffice.

Шаблон данного типа включает в себя текст документа и опционально одну или несколько таблиц. В тексте документа выводятся данные из первых строк произвольных полос. В таблицу можно выводить произвольное количество строк некоторой полосы.

Для вывода поля в тексте документа необходимо использовать строку вида ${band_name.field_name}, где band_name – имя полосы, field_name – имя поля.

Для вывода данных в таблицу она должна быть привязана к некоторой полосе. Это делается путем указания в первой ячейке таблицы строки вида ##band=band_name, где band_name – имя полосы. Поля в таблице размечаются строками вида ${field_name}, где field_name – имя поля связанной с таблицей полосы. Для обращения к полям других полос в таблице используйте префикс с именем полосы, как это делается в полях текста документа. В одной ячейке таблицы можно выводить несколько полей.

Вложенные горизонтальные полосы в формате DOCX и DOC не поддерживаются. Если вложенные полосы необходимы, используйте XLS(X)-шаблоны.

Таблица должна содержать либо одну, либо две строки. Если строк в таблице две, то поля связанной полосы должны находиться во второй строке. В первую заносится маркер с именем связанной полосы и, при необходимости, статический текст и поля других полос.

Например, для вывода отчёта, состоящего из двух полос: Book и Authors, первая из которых выводит название и жанр книги, а вторая – список авторов этой книги, шаблон выглядит следующим образом:

report template doc
Рисунок 38. Пример отчёта DOC

Формат ячеек для шаблонов DOCX и DOC не поддерживается. Рекомендуется приводить данные к строке в запросе. Например, для значения

select e.year as "year"

можно выполнить следующее приведение:

select cast(e.year as varchar(4)) as "year"