SSM框架集成导出Word文档功能 XDocReport +FreeMarker
网上有很多关于使用XDocReport导出Word的文章,都差不多试用了一下,也看了一些评论,发现实现功能的过程当中大家还是会出现各种问题。现在我来把我自己实现的过程说一下,顺便总结一下会出现的问题怎么样解决。
一、集成环境
目前我用的SSM框架是maven工程创建的,只要在pom.xml文件当中配置,自动下载到本地maven仓库即可。
<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.core</artifactId><version>2.0.2</version>
</dependency>
<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.document</artifactId><version>2.0.2</version>
</dependency>
<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.template</artifactId><version>2.0.2</version>
</dependency>
<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.document.docx</artifactId><version>2.0.2</version>
</dependency>
<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId><version>2.0.2</version>
</dependency>
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version>
</dependency>
目前我的项目里面已经集成了io和poi,如果需要的话也需要加上,我这里就不做赘述。
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version>
</dependency>
二、制作模板
这里注意wps和office有点不同:
1、office编辑域的界面
2、wps编辑域的界面
三、编写代码
package com.alibaba.controller;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import com.fitech.jgbbvalidate.vo.Goods;import fr.opensagres.xdocreport.core.XDocReportException;
import fr.opensagres.xdocreport.document.IXDocReport;
import fr.opensagres.xdocreport.document.registry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IContext;
import fr.opensagres.xdocreport.template.TemplateEngineKind;
import fr.opensagres.xdocreport.template.formatter.FieldsMetadata;@RestController
public class ExportWordController {@GetMapping("jgbb/exportWord")public void generateWord() throws IOException, XDocReportException {//获取Word模板,模板存放路径在项目的resources目录下InputStream ins = new FileInputStream("D:\\123.docx");//注册xdocreport实例并加载FreeMarker模板引擎IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins,TemplateEngineKind.Freemarker);//创建xdocreport上下文对象IContext context = report.createContext();//创建要替换的文本变量context.put("city", "北京市");context.put("startDate", "2020-09-17");context.put("endDate", "2020-10-16");context.put("totCnt", "3638763");context.put("totAmt", "6521");context.put("onCnt", "2874036");context.put("onAmt", "4768");context.put("offCnt", "764727");context.put("offAmt", "1753");context.put("typeCnt", "36");List<Goods> goodsList = new ArrayList<Goods>();Goods goods1 = new Goods();goods1.setNum("1");goods1.setType("臭美毁肤");goods1.setSv("675512");goods1.setSa("589");goodsList.add(goods1);context.put("goods", goodsList);//创建字段元数据FieldsMetadata fm = report.createFieldsMetadata();//Word模板中的表格数据对应的集合类型fm.load("goods", Goods.class, true);//输出到本地目录FileOutputStream out = new FileOutputStream(new File("D://商品销售报表1.docx"));report.process(context, out);}}
代码上面我说两点我遇到的问题:
1、InputStream ins = this.getClass().getResourceAsStream("/模板.docx");有的博主会用到这个来获取word模板文档,模板存放路径在项目的resources目录下,这就会遇到找不到模板文档的情况,就会报错:
fr.opensagres.xdocreport.core.XDocReportException: Impossible to create report for the input stream. The report loader supports only [docx] files type.
所以我直接把模板文档放到了D盘,因为在实际项目部署也是在服务器上的。
InputStream ins = new FileInputStream("D:\\123.docx");
2、第二个问题就是:
在生成表格的时候因为设置的模板原因,在创建Goods对象的时候有int类型的也会报错,得把属性变成String就可以了。
public class Goods {String num;String type;String sv;String sa;public String getNum() {return num;}public void setNum(String num) {this.num = num;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getSv() {return sv;}public void setSv(String sv) {this.sv = sv;}public String getSa() {return sa;}public void setSa(String sa) {this.sa = sa;}
}
以上就是我在实现导出word文档的时候遇到的问题 ,希望对你们有所帮助,如果有什么问题可以私聊我,想要代码和模板文档也可以问我要!
SSM框架集成导出Word文档功能 XDocReport +FreeMarker相关推荐
- 【Java实现导出Word文档功能 XDocReport +FreeMarker】
Java实现导出Word文档功能(XDocReport +FreeMarker) 前言 在日常的开发工作中,我们时常会遇到导出Word文档报表的需求,比如公司的财务报表.医院的患者统计报表.电商平台的 ...
- 思维导图软件MindManager导出Word文档功能详解
Mindmanager思维导图软件作为一款能与Microsoft office软件无缝集成的思维导图软件,支持Word文档的快速导入与导出,并支持Word文档的目录生成.模板套用等,极大地方便了用户完 ...
- java循环导出word文档_Java使用freemarker导出word文档
通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...
- Springboot 项目导出word文档(文档内容包括数据以及服务器图片)
Springboot 项目freemarker导出word文档(文档内容包括数据以及服务器图片) 前些天有需求要完成导出word文档功能,基础数据导出word文档,网上也能搜到很多源代码,但是我这边要 ...
- vue 生产word_nodejs(officegen)+vue(axios)在客户端导出word文档
前言 我的项目中有一个需求:点击按钮生成可编辑的word文档订单详情的信息 我使用的前端框架是Vue.js.后台使用的是node.js node.js生成和导出word文档我参考的是下面这两篇文章,写 ...
- 利用docx4j完美导出word文档(标签替换、插入图片、生成表格)
最近公司让我实现一个利用原有word模板,导出word文档的功能模块,发现docx4j是个很不错的工具,但是之前从来没有用过,对此并不了解,于是上网查找相关资料,也是非常少之,于是便自己开始摸索. 1 ...
- PHP导出word文档的简单实现方法(可导出图片)
这是看了网上几篇关于PHP导出word文档的文章之后,本人改进一下的方法,可以导出带图片的,以下是demo. $row = M('Article')->where(array('id'=> ...
- freemarker导出word文档——WordXML格式解析
前不久,公司一个项目需要实现导出文档的功能,之前是一个同事在做,做了3个星期,终于完成了,但是在项目上线之后却发现导出的文档有问题,此时,这个同事已经离职,我自然成为接班者,要把导出功能实现,但是我看 ...
- 如何导出word文档
前言 一般导出word,是后台做的功能,如果确实需要前端做,可以借助jQuery的wordexport.js导出word文档 提示:以下是本篇文章正文内容,下面案例可供参考 一.使用步骤 1.引入文件 ...
最新文章
- mybatis逆向工程配置文件怎么再偷懒(懒出天际)
- 计算机考研深圳大学和广东工业大学,报考人数过万!这些院校已成为考研“重灾区”...
- android StringBuffer实现换行
- NgRx store.dispatch方法的单步调试
- Python通过amqp消息队列协议中的Qpid实现数据通信
- 作业优先调度java代码_如何在触发它时在java代码中为hadoop作业设置优先级?
- 数据结构与算法--面试必问AVL树原理及实现
- php files得不到导入的文件,PHP判断文件是否被引入的方法get_included_files用法示例...
- Lync Server 2010所需媒体网络流量带宽详解和计算
- python爬取js动态网页_Python 爬取网页中JavaScript动态添加的内容(一)
- clone git 要输入yes_GitHub,git与python连接使用
- shell制表与脚本运行进度条写法
- 小学生都能听懂的傅里叶变换讲解
- Asterisk 11 chan_sip.c: Failed to authenticate device 看不到IP的问题
- 思科交换机接口配置trunk_思科交换机配置TRUNK的主要步骤
- php四段拼接ip,合并相同的ip段算法
- python中几种去重的方法
- 奔驰S400商务型升级前排通风座椅系统,夏天必备的功能
- android gps locationCb 数据
- 采购订单管理的四种常见类型