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. 在弹出的对话框中,类别选择“邮件合并”,域名选择 "MergeField",域属性中的域名填入模版表达式${userName},点击【确定】按钮:
3、重复步骤2,替换全部内容:
转换文件为FreeMarker模板:
将替换好的文件另存为.xml文件格式:代表登记表.xml,然后修改后缀名为.ftl,即代表登记表.ftl;
编写java代码:
ExportController:
ExportWord:
导出方法中包含的几个方法:
1、配置模板路径
2、获取模板
3、导出word文档到客户端
Java按照word模板导出、下载文档相关推荐
- vue element ui 利用xslx导出文档表格功能(纯前端导出下载文档)
目录 前言 步骤: 1.下载xslx 2.导入xslx 3.template中给个点击事件 4.methods中定义函数实现导出 前言 本篇文章记录纯前端导出下载文档功能. 若想查看从后端接收文件流, ...
- java修改导出模板,java模板导出word模板 java根据word模板导出
java 调用word模板实现循环套打生成word文档 首先我用的技术是 poi 这是代码,一个工具类得调用 public class WordUtil { /** * 基于模板文件导出 word 文 ...
- java根据word模板导出_java如何根据word模板生成word文档
展开全部 先下载jacob_1.10.1.zip. 解压后将jacob.dll放到windows/system32下面或\j2sdk\bin下面. 将jacob.jar加入项目. /* * Java2 ...
- java根据word模板导出_java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)...
相关一部分java文件和jar包 pom文件 com.aspose aspose-words 18.2 word模板 其中的内容要在设置在表格里面 js导出方法 functionf_export(){ ...
- java 根据word模板导出导出word文档
一:新建需要导出word的模板,替换其中需要替换的字段,如下 二:在桌面另存为如下格式 三:另存的文件复制为如下路径,并修改文件后缀为ftl 四: java 代码如下 @RequestMapping( ...
- Java使用word模板导出word
1.创建一个空的springboot工程,引入jar包 <dependency><groupId>org.apache.poi</groupId><artif ...
- java 点击a标签下载文档_使用a标签进行下载excel文件,打开下载后的文件内容为空,这是为什么?...
前端代码:下载 后端代码: 接口:@ApiOperation(value = "下载") @GetMapping("/down") public void do ...
- java 导出word,java根据提供word模板导出word文档
本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字.图片填充.一共提供了两种方式,1.基于本地文件 2.基于网络文件 本文讲解思路,1.先看示例,2. 示例对应的代码展示 3. 基本概 ...
- java通过ftl模板导出word最详细教程
百度云链接 链接: https://pan.baidu.com/s/1OEzvsFSqAelstDtu2mo5xw 提取码: fdhq https://pan.baidu.com/s/1OEzvsFS ...
最新文章
- AI一分钟 | 小米公布Q2财报,上市以来股价振幅高达30%;俄制造商推出步行杀手机器人...
- php 不能同时提交form
- LOJ-10096(强连通+bfs)
- 2批量批量查询数据插入数据_你还在利用复制批量插入数据吗?一个oracle命令助你批量插入数据...
- java设计模式之责任链模式以及在java中作用
- leetcood学习笔记-226- 翻转二叉树
- 细述 Java垃圾回收机制→How Java Garbage Collection Works?
- TCP连接三次握手和四次挥手
- CSS垂直居中的11种实现方式
- iOS开发第三方篇——友盟的哪些坑
- CCSK安全认证-M1-云计算概念和体系架构
- HTML字体颜色对照表
- 互联网常见通用的运营数据指标
- 我国供应链安全具体需要怎样进行一步一步建设
- 【算法1-3】暴力枚举——PERKET
- 知识分享:电脑可以使用的pdf翻译软件哪个好用?
- 静态路由完成DV协议路由过滤
- 写jsp遇到的两个问题及解决
- Eclipse各版本官方下载地址
- 一个网上在线密码破解网站