spring boot 整合Poi-tl 使用模板和数据创建很棒的Word文档。

259 阅读2分钟

1.前提

  • JDK1.8+
  • Apache POI5.2.2+ 导入Maven依赖
<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId> 
    <version>1.12.2</version> 
</dependency>

2.步骤(以文本标签为举例)

  1. 新建一个doc文件 user.doc

  2. 文件中定义一个文本标签: {{title}} (注意:所有的标签都是以{{开头,以}}结尾,标签可以出现在任何位置,包括页眉,页脚,表格内部,文本框等,表格布局可以设计出很多优秀专业的文档,推荐使用表格布局

  3. 代码示列

XWPFTemplate template = XWPFTemplate.compile("template.docx").render(
  new HashMap<String, Object>(){{
    put("title", "Hi, poi-tl Word模板引擎");
}});  
template.writeAndClose(new FileOutputStream("output.docx")); 
  1. 文档渲染
    • 方法说明: compile  编译模板**render 渲染数据**write` 输出到流文件
  • 渲染后文档:

    user.docx
    Hi, poi-tl Word模板引擎
    
  1. 总结

    当然也支持很多种自定义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,也可以在指定位置进行合并
** 用户自定义函数(插件)插件化设计,在文档任何位置执行函数