4. 语法
poi-tl內建了五种模板。
4.1. 文本模板{{var}}
{{var}}
TextRenderData
或 String
数据模型。
除了继承模板标签样式,也提供了通过代码设定文本样式的方式。
结构体只是数据模型的可视化展示,数据模型不是文本型的,而是Java对象。下文中出现的所有结构体也都如此。 |
文本换行使用 \n 字符。 |
4.2. 图片模板{{@var}}
{{@var}}
PictureRenderData
数据模型。
可以指定图片的宽度和高度,也支持 BufferedImage
,这样我们可以利用Java生成任意图表插入到word文档中。
4.3. 表格模板{{#var}}
{{#var}}
poi-tl默认实现了N行N列的样式(如下图),同时提供了当数据为空时,展示一行空数据的文案(如下图中的No Data Descs),数据模型是 MiniTableRenderData
。
表格的宽度(单位CM)怎么定义的: 页面宽度 - 页边距宽度 2 = 表格的最大宽度。页面宽度为A4(20.99 29.6,页边距为3.17 * 2.54)的文档最大表格宽度14.65CM。可以根据需要指定表格宽度。 |
需求的丰富多彩往往是默认表格样式无法满足的,我们通常会遇到以下两个场景:
场景一: 完全由自己掌控整个表格的生成:参见插件机制-新增RenderPolicy策略。
场景二: 在一个已有的表格中,动态处理某些单元格数据:提供了抽象表格策略DynamicTableRenderPolicy,参见示例-付款通知书。
4.4. 列表模板{{*var}}
{{*var}}
NumbericRenderData
数据模型。
列表样式支持罗马字符、有序无序等。参见NumbericRenderData.FMT_*。
FMT_DECIMAL //1. 2. 3.
FMT_DECIMAL_PARENTHESES //1) 2) 3)
FMT_BULLET //● ● ●
FMT_LOWER_LETTER //a. b. c.
FMT_LOWER_ROMAN //i ⅱ ⅲ
FMT_UPPER_LETTER //A. B. C.
4.5. 文档模板{{+var}}
{{+var}}
DocxRenderData
数据模型,可以是另一个docx文档的合并,或者是数据集合针对同一个模板的多个渲染结果的合并。
参见示例-一篇文章