创建word文件内容如下

将word导出为xml格式

将文件后缀名改为 .ftl

打开文件 修改图片的数据内容使用表达式代替

修改后

后查看${username}是否分家了,如果分家了将其多余部分删除 使其团聚

在springboot项目中添加freemarker依赖

<!-- 导出word文档-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.20</version>
</dependency>

将生成的test.ftl放在 resources/templates文件夹下

html中添加echarts

<div id="container" style="height: 100%;"></div>
<a onclick="exportImage()">导出</a>
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
option = null;
option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line'
}]
};
;
if (option && typeof option === "object") {
myChart.setOption(option, true);
}

添加导出触发事件方法

function exportImage(){
//获取Echart图形报表生成的Base64编码格式的数据
var imgData = myChart.getConnectedDataURL();
$.post('/word',{'imgData':imgData},function (data) {
alert(data);
})
}

controller 中的方法

@RequestMapping("/word")
@ResponseBody
public String generateWord(String imgData){
// 传递过程中 "+" 变为了 " " ,所以需要替换
String newImageInfo = imgData.replaceAll(" ", "+");
// 数据中:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABI4AAAEsCAYAAAClh/jbAAA ...
// 在"base64,"之后的才是图片信息
String[] arr = newImageInfo.split("base64,"); //添加模板数据
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("username","张三");
dataMap.put("imgData",arr[1]); //文件生成路径
String wordFilePath = "D:\\ftl";
//文件生成名称(因为是2003版本的xml模板,这里使用.doc后缀,如果使用.docx后缀生成的文件有问题)
String wordFileName = "演示文档.doc";
//模板文件名称
String templateFileName = "test.ftl"; //生成word文档
Boolean result = WordUtil.writeWordReport(wordFilePath, wordFileName, templateFileName, dataMap);
if(result){
return "success";
}else {
return "error";
}
}

创建WordUtil.java

其中代码如下

private static final String FTL_FP = "/templates/"; //模板路径

private static Configuration configuration = null;
static{
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");//设置默认的编码
//读配置文件
// path = PropertiesUtil.get("FILE_PATH")+"/"; } public static Boolean writeWordReport(String wordFilePath,String wordFileName,String templateFileName, Map<String, Object> beanParams) {
Writer out = null;
try {
configuration.setClassForTemplateLoading(WordUtil.class,FTL_FP);
Template template = configuration.getTemplate(templateFileName, "UTF-8"); //获取文件目录,如果不存在则创建
String filePath = "";
int index = wordFilePath.lastIndexOf(File.separator);
if(index != wordFilePath.length()-1){
filePath = wordFilePath+ File.separator;
}else {
filePath = wordFilePath;
}
File file1 = new File(filePath);
if(!file1.exists()){
file1.mkdirs();
} //输出文件
File file = new File(filePath+wordFileName);
FileOutputStream fos = new FileOutputStream(file);
out = new OutputStreamWriter(fos, "UTF-8");
template.process(beanParams, out);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
try {
if(out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

点击导出可生成word文件!

spring boot freemarker 导出word 带echarts图形报表的更多相关文章

  1. freemarker导出word带图片

    导出word带图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: <w:binData w:nam ...

  2. 使用Freemarker导出Word文档(包含图片)代码实现及总结

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  3. freemarker导出word文档——WordXML格式解析

    前不久,公司一个项目需要实现导出文档的功能,之前是一个同事在做,做了3个星期,终于完成了,但是在项目上线之后却发现导出的文档有问题,此时,这个同事已经离职,我自然成为接班者,要把导出功能实现,但是我看 ...

  4. freemarker导出word文档

    使用freemarker导出word文档的过程 **************************************************************************** ...

  5. freemarker导出word档

    1.word另存为xml:2.xml文件后缀名改成ftl:3.编写完整json字符串备用:4.修改ftl中动态字段为json中对应字段名:5.编写java代码自动生成word文件:(注意:换行用< ...

  6. spring boot+freemarker+spring security标签权限判断

    spring boot+freemarker+spring security标签权限判断 SpringBoot+SpringSecurity+Freemarker项目中在页面上使用security标签 ...

  7. Spring boot Freemarker 获取ContextPath的方法

    Spring boot Freemarker 获取ContextPath的两种方法: 1.自定义viewResolver,Spring boot中有一个viewResolver,这个和配置文件中的师徒 ...

  8. freemarker导出word的一些问题

    首先,了解下freemarker导出word的流程: 参考https://www.cnblogs.com/llfy/p/9303208.html 异常一: freemarker.core.ParseE ...

  9. 关于使用freemarker导出word

    java使用FreeMarker导出word 一.      先做一个word模板 二.      将该word文件另存为xml格式(注意是另存为,不是直接改扩展名) 三.     打开xml文件把要 ...

随机推荐

  1. 【C#】WixToolset快速入门教程

    原文:[C#]WixToolset快速入门教程 介绍 给windows系统做软件,常见的打包工具大家可能都听说过,如:大名鼎鼎的Installshield.Inno setup等.在遇见Wix之前In ...

  2. 原生Js监听普通dom尺寸变化

    原生Js监听普通dom尺寸变化 具体做法有以下几种: 初始化项目后,轮询,反复查看 dom 尺寸是否变化,这种一听就感觉不好,开销太大. 监听元素的滚动事件,在 目标 dom 里面包裹一个同等大小的 ...

  3. SVG路径动画解密

    原文:SVG路径动画解密 原文链接:http://www.gbtags.com/gb/share/5581.htm SVG路径动画效果现在貌似越来越多网站都使用了,给我的感觉就像是一段时间的流行而已, ...

  4. 高手问答精选:Go 语言 —— 云计算时代的 C 语言(类似于一个FAQ)

    Go 语言被称为云计算时代的 C 语言,它在软件开发效率和运行效率之间做出了绝佳的权衡.这使得它既适应于互联网应用的极速开发,又能在高并发.高性能的开发场景中如鱼得水.正因如此,许多互联网公司,尤其是 ...

  5. 八荣八耻 IT版

    八荣八耻 IT版以可配置为荣,以硬编码为耻:以系统互备为荣,以系统单点为耻:以随时可重启为荣,以不能迁移为耻:以整体交付为荣,以部分交付为耻:以无状态为荣,以有状态为耻:以标准化为荣,以特殊化为耻:以 ...

  6. Tomcat Java SSL

    转自 - http://blog.csdn.net/szzt_lingpeng/article/details/51247980 转载自:http://my.oschina.net/cimu/blog ...

  7. Debug监视器(监视运行期程序通过API函数OutputDebugString输出的字符串)

    http://download.csdn.net/detail/zswang/207199

  8. 通过Graphics对象获取它所属的Control

    using System.Runtime.InteropServices;   [DllImport("user32.dll")] public static extern Int ...

  9. 我的第一个Chrome插件:天气预报应用

    1.Chrome插件开发基础   开发Chrome插件很简单,只要会基本的前台技术HTML.CSS.JS就可以开发了. Chrome插件一般包括两个HTML页面background和popup.   ...

  10. Delphi XE6 如何设计并使用FireMonkeyStyle

    介绍   FireMonkey使用Style来控制控件的显示方式. 每个控件都有一个StyleLookup属性,FireMonkey就是通过控件的这个属性来在当前窗体的StyleBook控件中查找匹配 ...