4. 语法

poi-tl內建了五种模板。

4.1. 文本模板{{var}}

{{var}}

TextRenderDataString 数据模型。

4. 语法 - 图1

除了继承模板标签样式,也提供了通过代码设定文本样式的方式。

4. 语法 - 图2

结构体只是数据模型的可视化展示,数据模型不是文本型的,而是Java对象。下文中出现的所有结构体也都如此。
文本换行使用 \n 字符。

4.2. 图片模板{{@var}}

{{@var}}

PictureRenderData 数据模型。

4. 语法 - 图3

可以指定图片的宽度和高度,也支持 BufferedImage,这样我们可以利用Java生成任意图表插入到word文档中。

4. 语法 - 图4

4.3. 表格模板{{#var}}

{{#var}}

poi-tl默认实现了N行N列的样式(如下图),同时提供了当数据为空时,展示一行空数据的文案(如下图中的No Data Descs),数据模型是 MiniTableRenderData

table0

4. 语法 - 图6

4. 语法 - 图7

表格的宽度(单位CM)怎么定义的: 页面宽度 - 页边距宽度 2 = 表格的最大宽度。页面宽度为A4(20.99 29.6,页边距为3.17 * 2.54)的文档最大表格宽度14.65CM。可以根据需要指定表格宽度。

需求的丰富多彩往往是默认表格样式无法满足的,我们通常会遇到以下两个场景:

场景一: 完全由自己掌控整个表格的生成:参见插件机制-新增RenderPolicy策略

场景二: 在一个已有的表格中,动态处理某些单元格数据:提供了抽象表格策略DynamicTableRenderPolicy,参见示例-付款通知书

4.4. 列表模板{{*var}}

{{*var}}

NumbericRenderData 数据模型。

4. 语法 - 图8

列表样式支持罗马字符、有序无序等。参见NumbericRenderData.FMT_*。

  1. FMT_DECIMAL //1. 2. 3.
  2. FMT_DECIMAL_PARENTHESES //1) 2) 3)
  3. FMT_BULLET //● ● ●
  4. FMT_LOWER_LETTER //a. b. c.
  5. FMT_LOWER_ROMAN //i ⅱ ⅲ
  6. FMT_UPPER_LETTER //A. B. C.

4.5. 文档模板{{+var}}

{{+var}}

DocxRenderData 数据模型,可以是另一个docx文档的合并,或者是数据集合针对同一个模板的多个渲染结果的合并。

4. 语法 - 图9

参见示例-一篇文章