poi 替换文本框内容_原创 | JAVA + POI生成Microsoft Word文档

说明:日常工作中,我们经常会遇到要求动态生成Word文档内容的需求,如:简历、检查书、申请书等。

但是在之前Microsoft Office一直都是封闭式的体系,微软本身也未开放其生态,每年通过Office赚得盆满钵满。微软也未提供过任何开放式的接口或jdk来支持类似Word的动态生成等需求。因此这一块一直以来都令开发人员很是头疼,也出现了各种不同方式的实现,也有大神写出来可直接使用的jar包供大家开发使用。

Microsoft Word在2007版本之后,默认的后缀名就是.docx。底层的内容其实就是一堆xml文件+多媒体资源+主体定义等。示例如下图:

a3bc861b02959cfc243285419e06cb31.png

word文件夹内容如下所示:

9856ef48924d1bea7493290779223657.png

动态生成后的文档内容如果下载时不指定response的ContentType的话,直接下载下来的内容就如上图一样,那怕你生成时将文件名称后缀指定为.doc或.docx都无解。

大家可以全篇看完自行体验一下,了解一下底层的数据结构。下次另开一篇讲解Java web下的文档下载实现。

开源依赖:今天我们展示通过org.apache.poi开源第三方工具包来实现Word文档的动态生成。Maven的依赖可通过:https://search.maven.org/artifact/org.apache.poi/poi获取到对应版本。在写本文当下最新版本已经更新到了4.1.2,我使用的是4.1.1版本体验,通过添加以下依赖到pom.xml中即可:

<dependency>    <groupId>org.apache.poigroupId>    <artifactId>poi-scratchpadartifactId>    <version>4.1.1version>dependency><dependency>    <groupId>org.apache.poigroupId>    <artifactId>poi-ooxmlartifactId>    <version>4.1.1version>dependency>

poi-ooxml主要用于生成.docx格式的word。今天我们示例也是生成.docx格式文档,而非.doc格式文档。

在整个org.apache.poi开源项目中提供多个针对Microsoft Office的开发工具包,具体如下:

ffe5f471e134ba0c0096daf801767220.png

每种不同的jar所支持的场景说明如下:

8a1100d4237f1089c2bd1dca026cc1a9.png

大家可根据自身需要进行对应的选择,如Excel的.xls时选择poi即可;.xlsx时选择poi+poi-ooxml即可。更多内容请参阅:https://poi.apache.org/

定义模板:生成最终所需的Word文档前,我们需要根据实际需求先创建对应格式与内容的模板文件,模板文件为.docx格式,如:name_check_template.docx。在模板文件里定义好整个文档的样式、格式、结构以及通用的内容,将动态的内容以通配符进行占位。内容示例如下,一个模板文件中可以有多页内容,以实需为准:

4d0a705dd0daeedd3e5bfe82c5f80381.png

78ade5e9d40722302b54896c42c74abf.png

图中所示的:Enterprise、User、Phone等为需要替换的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值