项目中经常使用POI进行 word Excel 生成,对于循环行,循环列,图片,超链接 这些东西的麻烦,又苦于POI的英文文档,所以向大家推荐一下
模板生成神器——poi-ti
建议: 直接下载源码 根据文档 找到需要的功能 进行开发。
环境:
jdk 1.8
springboot 2.X
POI 4.1.2
POI-ti 版本根据poI的版本来
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.10.3</version>
</dependency>
poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。
在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海。
1. Why poi-tl
方案 | 移植性 | 功能性 | 易用性 |
Poi-tl | Java跨平台 | Word模板引擎 | 基于Apache POI,更友好的API |
Apache POI | Java跨平台 | Apache项目,不仅封装了易用的文档API(文本、图片、表格、页眉、页脚、图表等),也可以在底层直接操作XML结构 | 文档不全,这里有一个教程:Apache POI Word快速入门 |
Freemarker | XML跨平台 | 仅支持文本,很大的局限性 | 不推荐,需要维护XML结构,代码后期不可维护 |
OpenOffice | 部署OpenOffice,移植性较差 | - | 需要了解OpenOffice的API |
HTML浏览器导出 | 依赖浏览器的实现,移植性较差 | HTML不能很好的兼容Word的格式 | - |
Jacob、winlib | Windows平台 | - | 复杂,完全不推荐使用 |
2. 特性
poi-tl正是一个基于Apache POI的Word模板引擎,并且拥有着让人喜悦的特性。
引擎功能 | 描述 |
文本 | 将标签渲染为文本 |
图片 | 将标签渲染为图片 |
表格 | 将标签渲染为表格 |
列表 | 将标签渲染为列表 |
图表 | 条形图(3D条形图)、柱形图(3D柱形图)、面积图(3D面积图)、折线图(3D折线图)、雷达图、饼图(3D饼图)等图表渲染 |
If Condition判断 | 隐藏或者显示某些文档内容(包括文本、段落、图片、表格、列表、图表等) |
Foreach Loop循环 | 循环某些文档内容(包括文本、段落、图片、表格、列表、图表等) |
Loop表格行 | 循环复制渲染表格的某一行 |
Loop表格列 | 循环复制渲染表格的某一列 |
Loop有序列表 | 支持有序列表的循环,同时支持多级列表 |
代码高亮 | word中代码块高亮展示,支持26种语言和上百种着色样式 |
Markdown | 将Markdown渲染为word文档 |
Word批注 | 完整的批注功能,创建批注、修改批注等 |
Word附件 | Word中插入附件 |
图片替换 | 将原有图片替换成另一张图片 |
书签、锚点、超链接 | 支持设置书签,文档内锚点和超链接功能 |
Expression Language | 完全支持SpringEL表达式,可以扩展更多的表达式:OGNL, MVEL… |
标签定制 | 支持自定义标签前后缀 |
文本框 | 文本框内标签支持 |
样式 | 模板即样式,同时代码也可以设置样式 |
模板嵌套 | 模板包含子模板,子模板再包含子模板 |
合并 | Word合并Merge,也可以在指定位置进行合并 |
用户自定义函数(插件) | 在文档任何位置执行函数 |
poi-tl是一个免费开源的Java类库,你可以非常方便的加入到你的项目中。
源码地址: https://github.com/Sayi/poi-tl
文档地址: http://deepoove.com/poi-tl/