1.前提
- JDK1.8+
- Apache POI5.2.2+ 导入Maven依赖
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.12.2</version>
</dependency>
2.步骤(以文本标签为举例)
-
新建一个doc文件 user.doc
-
文件中定义一个文本标签: {{title}} (注意:所有的标签都是以
{{开头,以}}结尾,标签可以出现在任何位置,包括页眉,页脚,表格内部,文本框等,表格布局可以设计出很多优秀专业的文档,推荐使用表格布局) -
代码示列
XWPFTemplate template = XWPFTemplate.compile("template.docx").render(
new HashMap<String, Object>(){{
put("title", "Hi, poi-tl Word模板引擎");
}});
template.writeAndClose(new FileOutputStream("output.docx"));
- 文档渲染
- 方法说明:
compile
编译模板**render渲染数据**write` 输出到流文件
- 方法说明:
compile
-
渲染后文档:
user.docx Hi, poi-tl Word模板引擎
-
总结
当然也支持很多种自定义Word文档模版(详细见官网地址:http://deepoove.com/poi-tl/)
poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。
| Word模板引擎功能 | 描述 |
|---|---|
| ** 文本 | 将标签渲染为文本 |
| ** 图片 | 将标签渲染为图片 |
| ** 表格 | 将标签渲染为表格 |
| ** 列表 | 将标签渲染为列表 |
| ** 图表 | 条形图(3D条形图)、柱形图(3D柱形图)、面积图(3D面积图)、折线图(3D折线图)、雷达图、饼图(3D饼图)、散点图等图表渲染 |
| ** If Condition判断 | 根据条件隐藏或者显示某些文档内容(包括文本、段落、图片、表格、列表、图表等) |
| ** Foreach Loop循环 | 根据集合循环某些文档内容(包括文本、段落、图片、表格、列表、图表等) |
| ** Loop表格行 | 循环复制渲染表格的某一行 |
| ** Loop表格列 | 循环复制渲染表格的某一列 |
| ** Loop有序列表 | 支持有序列表的循环,同时支持多级列表 |
| ** Highlight代码高亮 | word中代码块高亮展示,支持26种语言和上百种着色样式 |
| ** Markdown | 将Markdown渲染为word文档 |
| ** Word批注 | 完整的批注功能,创建批注、修改批注等 |
| ** Word附件 | Word中插入附件 |
| ** SDT内容控件 | 内容控件内标签支持 |
| ** Textbox文本框 | 文本框内标签支持 |
| ** 图片替换 | 将原有图片替换成另一张图片 |
| ** 书签、锚点、超链接 | 支持设置书签,文档内锚点和超链接功能 |
| ** Expression Language | 完全支持SpringEL表达式,可以扩展更多的表达式:OGNL, MVEL… |
| ** 样式 | 模板即样式,同时代码也可以设置样式 |
| ** 模板嵌套 | 模板包含子模板,子模板再包含子模板 |
| ** 合并 | Word合并Merge,也可以在指定位置进行合并 |
| ** 用户自定义函数(插件) | 插件化设计,在文档任何位置执行函数 |