在日常的开发工作中,我们时常会遇到导出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 POIFreeMarker模板引擎的方式:

实例模板:

制作模板

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

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

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

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

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

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

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

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

转换文件为FreeMarker模板:

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

编写java代码:

ExportController:

ExportWord:

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

1、配置模板路径

2、获取模板

3、导出word文档到客户端

Java按照word模板导出、下载文档相关推荐

  1. vue element ui 利用xslx导出文档表格功能(纯前端导出下载文档)

    目录 前言 步骤: 1.下载xslx 2.导入xslx 3.template中给个点击事件 4.methods中定义函数实现导出 前言 本篇文章记录纯前端导出下载文档功能. 若想查看从后端接收文件流, ...

  2. java修改导出模板,java模板导出word模板 java根据word模板导出

    java 调用word模板实现循环套打生成word文档 首先我用的技术是 poi 这是代码,一个工具类得调用 public class WordUtil { /** * 基于模板文件导出 word 文 ...

  3. java根据word模板导出_java如何根据word模板生成word文档

    展开全部 先下载jacob_1.10.1.zip. 解压后将jacob.dll放到windows/system32下面或\j2sdk\bin下面. 将jacob.jar加入项目. /* * Java2 ...

  4. java根据word模板导出_java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)...

    相关一部分java文件和jar包 pom文件 com.aspose aspose-words 18.2 word模板 其中的内容要在设置在表格里面 js导出方法 functionf_export(){ ...

  5. java 根据word模板导出导出word文档

    一:新建需要导出word的模板,替换其中需要替换的字段,如下 二:在桌面另存为如下格式 三:另存的文件复制为如下路径,并修改文件后缀为ftl 四: java 代码如下 @RequestMapping( ...

  6. Java使用word模板导出word

    1.创建一个空的springboot工程,引入jar包 <dependency><groupId>org.apache.poi</groupId><artif ...

  7. java 点击a标签下载文档_使用a标签进行下载excel文件,打开下载后的文件内容为空,这是为什么?...

    前端代码:下载 后端代码: 接口:@ApiOperation(value = "下载") @GetMapping("/down") public void do ...

  8. java 导出word,java根据提供word模板导出word文档

    本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字.图片填充.一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概 ...

  9. java通过ftl模板导出word最详细教程

    百度云链接 链接: https://pan.baidu.com/s/1OEzvsFSqAelstDtu2mo5xw 提取码: fdhq https://pan.baidu.com/s/1OEzvsFS ...

最新文章

  1. AI一分钟 | 小米公布Q2财报,上市以来股价振幅高达30%;俄制造商推出步行杀手机器人...
  2. php 不能同时提交form
  3. LOJ-10096(强连通+bfs)
  4. 2批量批量查询数据插入数据_你还在利用复制批量插入数据吗?一个oracle命令助你批量插入数据...
  5. java设计模式之责任链模式以及在java中作用
  6. leetcood学习笔记-226- 翻转二叉树
  7. 细述 Java垃圾回收机制→How Java Garbage Collection Works?
  8. TCP连接三次握手和四次挥手
  9. CSS垂直居中的11种实现方式
  10. iOS开发第三方篇——友盟的哪些坑
  11. CCSK安全认证-M1-云计算概念和体系架构
  12. HTML字体颜色对照表
  13. 互联网常见通用的运营数据指标
  14. 我国供应链安全具体需要怎样进行一步一步建设
  15. 【算法1-3】暴力枚举——PERKET
  16. 知识分享:电脑可以使用的pdf翻译软件哪个好用?
  17. 静态路由完成DV协议路由过滤
  18. 写jsp遇到的两个问题及解决
  19. Eclipse各版本官方下载地址
  20. 一个网上在线密码破解网站

热门文章

  1. 通过canvas画出爱心图案,表达你的爱意!
  2. 封装的PKPM BimView的方法
  3. 人工智能会取代艺术家?
  4. Antd给表格一个斜线分隔
  5. 【送书啦】Python操作Mysql(连接、数据探查、写Excel)
  6. 颜色的前世今生3·色彩体系
  7. MuMu模拟器 安装电脑本地apk
  8. 运放环路补偿及计算,零点、极点计算
  9. A40i/T3修改根分区大小
  10. 《自然》杂志:面对“电车难题”,不同国家的人有不同的道德选择