3.2.3. DOCX 和 DOC 模板

可以使用 Microsoft OfficeOpenOffice/LibreOffice 创建 DOC 和 DOCX 模板。

这些类型的模板可以包括文档文本和可选的一个或多个表格。文档文本输出任意区的第一行数据。在表格中,可以输出任意数量的报表带区行。

要在文档文本中放置字段,应该使用 ${band_name.field_name} 格式的字符串,其中 band_name 是带区名称,field_name - 带区字段的名称。

要将数据输出到表格中,应该将其链接到一个报表带区。这是通过在表格的第一个单元格中指定 ##band=band_name 来完成的,其中 band_name 是带区名。表格字段以 ${field_name} 格式被放置,其中 field_name 是与表格关联的带区的字段名称。可以使用带区名称前缀来访问其它带区的字段,与文档文本字段的相同。可以在单个表格单元格中输出多个字段。

DOCX 和 DOC 中的水平报表带区不能包含子区。如果需要子区,请使用 XLS(X)格式。

Warning

模板中表格必须包含一行或两行。如果表格有两行,则相应的带区字段必须在第二行。第一行应包含带有相应报表区名称的标记,如果需要,还可以包含静态文本或其它报表带区字段。

下面是一个模板示例,它输出一个由两个带区( BookAuthors )组成的报表。第一个带区输出书名和分类,第二个带区输出本书的作者列表。

report template doc
Figure 39. DOCX 模板
Warning

DOCX 和 DOC 模板不支持单元格数据格式化。要避免由于用户的语言环境而导致的数字或日期格式问题,例如不必要的数字分隔符,请尝试将数据转换为字符串。例如, 将

select e.year as "year"

转换为

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