vlambda博客
学习文章列表

你还在用Apache-POI导出Word,早过时了,用了这个真香!

Hello,大家好,我是人见人爱,花见花开的Tabber。


在我们开发中Word导出功能是经常遇到的,那么你都用过哪些方案呢?

目前主流的方案有:Apache POI、Freemarker、OpenOffice、HTML浏览器导出、Jacob、winlib 等。


用过的同鞋想必都知道这些工具没那么好用,不是有版本兼容问题,就是导出格式问题,要不就是学习成本太高。


那有没有学习成本低、兼容性好、开源的、还能跨平台的Word导出插件呢?

你还在用Apache-POI导出Word,早过时了,用了这个真香!




目前最新版本为:V1.12.0


介绍


poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。

在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海。


对比


你还在用Apache-POI导出Word,早过时了,用了这个真香!


特点


特征 描述

文本

将标签呈现为文本

图片

将标签渲染为图片

✅表格

将标签呈现为表格

编号

将标签呈现为编号

图表

条形图(3D条形图)、柱形图(3D柱形图)、面积图(3D面积图)、折线图(3D折线图)、雷达图、饼图(3D饼图)等图表渲染

✅ if条件

根据条件隐藏或显示某些文档内容(包括文本、段落、图片、表格、列表、图表等)

Foreach 循环

根据集合循环遍历某些文档内容(包括文本、段落、图片、表格、列表、图表等)
Loop表格行 循环复制渲染表的一行
Loop表格列 循环复制并渲染表格的一列
Loop有序列表 支持有序列表的循环,同时支持多级列表
代码高亮 代码块单词高亮,支持26种语言和数百种着色样式
✅Markdown 将 Markdown 转换为 Word 文档
Word批注 在 Word 中插入附件
✅Word评论 完成支持评论、创建评论、修改评论等。
SDT内容控件 完整支持结构化文档标签
文本框 文本框中的标签支持
图片替换 用另一张图片替换原始图片
书签、锚点、超链接 支持在文档中设置书签、锚点和超链接
表达式语言 完全支持SpringEL表达式,可以扩展更多表达式:OGNL、MVEL...
✅样式 模板就是样式,代码也可以设置样式
模板嵌套 模板包含子模板,子模板再包含子模板
合并 Word合并Merge,也可以在指定位置合并
自定义函数(插件) 插件式设计,在文档任意位置执行功能


如何引入

maven引入

<dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.0</version></dependency>

Gradle

implementation 'com.deepoove:poi-tl:1.12.0'


如何使用

新建Word文档template.docx,包含标签 {{title}}

XWPFTemplate template = XWPFTemplate.compile("template.docx").render( new HashMap<String, Object>(){{ put("title", "Hi, poi-tl Word模板引擎");}}); template.writeAndClose(new FileOutputStream("output.docx"));

运行后,即可得到一个Word文档,是不是So Easy!


这里仅仅是一个简单示例,更多内容,可参考使用文档,上面写的也很详细。


梅花十三都来关注了,你不来关注……

     
       
       
     

END


                
                  
                  
                

👇

1. 

2. 

3. 

4. 

5. 

6

7. 

老规矩,文末上图