Java按照word模板导出、下载文档

Java按照word模板导出、下载文档,第1张

Java按照word模板导出、下载文档

在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表、医院的患者统计报表、电商平台的销售报表等等。

导出Word方式多种多样,通常有以下几种方式:

    1. 使用第三方Java工具类库Hutool的Word工具类,参考网址为https://www.hutool.cn/docs/#/poi/Word生成-Word07Writer;

    2. 利用Apache POI和FreeMarker模板引擎;

    3. 第三方报表工具。

上面的几种方式虽然可以实现Word文档的导出,但有以下缺点:

    第一种方式 *** 作简单,但也只能生成简单的Word文档,无法生成有表格的Word文档;

    第二种方式可以生成复杂的Word文档,但是还要进行Word转xml,xml转ftl的双重转换,不适合内容经常变更的Word文档;

    第三种方式有时候不适合对格式要求严格的文档。

那么,有没有既简单又高效的导出Word的方法呢?答案是肯定有的。接下来我就来介绍一种用Java语言实现的,通过XDocReport和FreeMarker模板引擎生成Word文档的方法。

准备环境
开发语言:Java7及以上的版本。

开发工具:Eclipse/Idea。

第三方依赖库:XDocReport、POI、Freemarker。

模板语言:FreeMarker。

Word编辑器:office2016及其他版本较高的Word编辑器。

这里使用Apache POI和FreeMarker模板引擎的方式:

实例模板:

制作模板

Word模板如上图,可以看到模板内容主要是表格。我们在实际的开发过程中生成的报表几乎都是动态生成的,所以模板中的数字和表格里的数据都要替换成我们后台的实际数据。

替换Word模板中的动态变量,我们需要掌握两个知识点:

 1.Word文档中的Word域,word域是引导Word在文档中自动插入文字、图形、页码或其他信息的一组代码。在这里我们可以把Word域理解成标识符,这个标识符表示Word文档中要被替换的内容;

 2.FreeMarker模板下的变量表达式,比如用${userName}替换Word示例模板中的”七里河管理员”。

了解了以上两个概念后,我们就可以动手编辑Word模板了,步骤如下:

1. 首先在Word模板中选中要替换的文本,在这儿拿标题中的”七里河管理员”为例,然后键盘使用 Ctrl + F9 组合键将其设置为域,此时文本会被"{}"包围,接着鼠标右键选择【编辑域(E)...】:

2. 在d出的对话框中,类别选择“邮件合并”,域名选择 "MergeField",域属性中的域名填入模版表达式${userName},点击【确定】按钮:

3、重复步骤2,替换全部内容:

转换文件为FreeMarker模板:

将替换好的文件另存为.xml文件格式:代表登记表.xml,然后修改后缀名为.ftl,即代表登记表.ftl;

编写java代码:

ExportController:

ExportWord:

导出方法中包含的几个方法:

1、配置模板路径

2、获取模板

3、导出word文档到客户端

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5075093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存