SpringBoot 项目使用poi-tl实现导出word功能:
获取数据录入到固定的word模板,最后生成新的word文档。
Poi-tl官方文档:http://deepoove.com/poi-tl/
一、需求
根据word模板,动态填充模板内容,生成新的word。
二、poi-tl介绍
poi-tl(poi template language)是Word模板引擎
,基于Microsoft Word模板和数据生成新的文档。
Apache POI不仅在上层封装了易用的文档API(文本、图片、表格、页眉、页脚、图表等),也可以在底层直接操作文档XML结构,poi-tl正是一个基于Apache POI的Word模板引擎
,并且拥有着让人喜悦的特性。
poi-tl语法:
总共就5种语法
:1.文本模板{ {var}} 渲染为 TextRenderData 或 String 数据模型
2.图片模板{ {@photo}} 渲染为 PictureRenderData 数据模型
3.表格模板{ {#var}} 渲染数据模型是 MiniTableRenderData
4.列表模板{ {*var}} 渲染为 NumbericRenderData 数据模型
5.文档模板{ {+var}} 渲染为 DocxRenderData 数据模型
poi-tl的优点
根据官方文档介绍,poi-tl具有以下优点:
A、支持动态填充文本、图片、表格、列表、文档
B、支持DOCX格式,所有的模板标签都是以 { { 开头,以 }}结尾
,模板标签可以出现在任何非文本框的位置,包括页眉,页脚,表格内部等等。
C、poi-tl的一个核心特点是数据模型与样式的分离
,同样的数据模型可以用来渲染各种不同样式的模板。
D、文档的样式继承模板标签的样式
,即如果模板{ {title}}是蓝色微软雅黑加粗四号字体,则替换后的文本也是蓝色微软雅黑加粗四号字体。
二、具体应用
1.添加必要依赖
<!-- word导出 -->
<!-- poi-tl是基于Apache POI的Word模板引擎。poi-tl依赖的是poi3.16版本 -->
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.5.0</version>
</dependency>
<!-- 对JSP的支持 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</