Sentinel中文网

领取MOLI红包
你的位置:Sentinel中文网 > HIPPOP中文网 >

Java使用poi-tl1.9.1生成Word文档的技巧分享

前言 也许在您的工作当中会碰到如下的一些场景,比如您需要组织一个活动,主办方需要对每个报名参加的单位进行报名通知书的生成。也许您会说,参加活动的不多,可以采取人工的方式进行信息填写,然后再发送给报名人员就好。如果仅是几个人或者几十个人还好,如果是几百人,您还会选择这种方式么? 针对这种批量动态个性化的word生成需求,有没有什么技术可以进行辅助生成呢?一定是有的,在Java的世界中,实现这种需求有好几种实现方案,本文推荐一种简单快捷的实现方式,基于开源的poi-tl的实现机制。本文将简单介绍poi-tl的相关知识,通过一个实际的案例实践,充分介绍如何利用poi-tl进行目标文档的生成,同时分享几个不同的office版本如何进行图表生成的解决方案。如果刚好您也在进行相关技术选型,本文可以作为使用参考。 一、poi-tl简介 1、什么是poi-tl poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。poi-tl是一款采用Apache License 2.0开源协议的开源产品,poi-tl github地址。 2、常见的word生成对比 方案移植性功能性易用性Poi-tlJava跨平台Word模板引擎,基于Apache POI,提供更友好的API低代码,准备文档模板和数据即可Apache POIJava跨平台Apache项目,封装了常见的文档操作,也可以操作底层XML结构文档不全,这里有一个教程:Apache POI Word快速入门FreemarkerXML跨平台仅支持文本,很大的局限性不推荐,XML结构的代码几乎无法维护OpenOffice部署OpenOffice,移植性较差-需要了解OpenOffice的APIHTML浏览器导出依赖浏览器的实现,移植性较差HTML不能很好的兼容Word的格式,样式糟糕-Jacob、winlibWindows平台-复杂,完全不推荐使用 3、poi-tl功能点 d模板引擎功能描述 文本将标签渲染为文本 图片将标签渲染为图片 表格将标签渲染为表格 列表将标签渲染为列表 图表条形图(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,也可以在指定位置进行合并 用户自定义函数(插件)插件化设计,在文档任何位置执行函数 二、poi-tl文档生成 通常来说,我们会先制作好一个标准的参考模板,让后将需要替换的数据替换到目标参数中,完成相应参数的替换,所以刚开始先来准备一分word模板。 1、模板准备 在电脑的任意盘符,这里以D盘为例,创建一个文件输入.docx的word文档,打开文档编辑 在这个模板中定义了文本标签以及图片的定义。这里注意的是,{{}}这对标准参数符必须是英文状态下输入,之前有朋友就是没注意中英文,导致程序没有按照预期出来。同时注意图片的引用符在参数名称前面加上英文@符号。 在模板中加入一些图表信息,丰富素材,这里需要设置。我个人电脑上的图表参数设置如下(尤其注意不同的office版本,对应的编辑处理方法不一致): 2、目标参数填充 首先在工程中进行pom.xml引入 参数填充:这里为了演示方便,直接构造演示数据,真实项目中可以使从数据库或者其它接口获取相应的数据来进行参数的设置。 3、生成效果 将以上代码运行后,可以在D盘目录中看到以下的输出结果。  三、可能会遇到的问题 1、混合图表生成报错 如果在代码运行过程中遇到以下异常: Combo chart must set comboType field of series!这个问题大概率是因为图表生成没有指定图表类型。只需要的代码中指定图表类型即可,错误参考代码如下: 正确参考代码,通过series3.setComboType(SeriesRenderData.ComboType.LINE)指定: 2、图表参数设置技巧 不同版本的office,对于参数的替换设置界面不一样,尤其需要注意。这里提供两种环境的设置参考。第一种是office2021。 office2021的图表参数设置是鼠标点击图表右键,出现查看可选文字,在这里进行设置。 在以wps为例,本机安装版本为:wps11.1.0 双击图表空白区,在文字选项中的大小与属性一栏进行设置 总结 以上就是本文的主要内容,本文将简单介绍poi-tl的相关知识,通过一个实际的案例实践,充分介绍如何利用poi-tl进行目标文档的生成,同时分享几个不同的office版本如何进行图表生成的解决方案。如果刚好您也在进行相关技术选型,本文可以作为使用参考。行文仓促,如有不当之处,欢迎批评指正。 poi-tl 参考技术网站:https://deepoove.com/poi-tl/ 以上就是Java使用poi-tl1.9.1生成Word文档的技巧分享的详细内容,更多关于Java使用poi-tl1.9.1生成Word的资料请关注脚本之家其它相关文章!