创建word文件内容如下

将word导出为xml格式

将文件后缀名改为 .ftl

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

修改后

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

在springboot项目中添加freemarker依赖

  1. <!-- 导出word文档-->
  2. <dependency>
  3. <groupId>org.freemarker</groupId>
  4. <artifactId>freemarker</artifactId>
  5. <version>2.3.20</version>
  6. </dependency>

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

html中添加echarts

  1. <div id="container" style="height: 100%;"></div>
  2. <a onclick="exportImage()">导出</a>
  1. var dom = document.getElementById("container");
  2. var myChart = echarts.init(dom);
  3. var app = {};
  4. option = null;
  5. option = {
  6. xAxis: {
  7. type: 'category',
  8. data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
  9. },
  10. yAxis: {
  11. type: 'value'
  12. },
  13. series: [{
  14. data: [820, 932, 901, 934, 1290, 1330, 1320],
  15. type: 'line'
  16. }]
  17. };
  18. ;
  19. if (option && typeof option === "object") {
  20. myChart.setOption(option, true);
  21. }

添加导出触发事件方法

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

controller 中的方法

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

创建WordUtil.java

其中代码如下

  1. private static final String FTL_FP = "/templates/"; //模板路径
  2.  
  3. private static Configuration configuration = null;
  4. static{
  5. configuration = new Configuration();
  6. configuration.setDefaultEncoding("utf-8");//设置默认的编码
  7. //读配置文件
  8. // path = PropertiesUtil.get("FILE_PATH")+"/";
  9.  
  10. }
  11.  
  12. public static Boolean writeWordReport(String wordFilePath,String wordFileName,String templateFileName, Map<String, Object> beanParams) {
  13. Writer out = null;
  14. try {
  15. configuration.setClassForTemplateLoading(WordUtil.class,FTL_FP);
  16. Template template = configuration.getTemplate(templateFileName, "UTF-8");
  17.  
  18. //获取文件目录,如果不存在则创建
  19. String filePath = "";
  20. int index = wordFilePath.lastIndexOf(File.separator);
  21. if(index != wordFilePath.length()-1){
  22. filePath = wordFilePath+ File.separator;
  23. }else {
  24. filePath = wordFilePath;
  25. }
  26. File file1 = new File(filePath);
  27. if(!file1.exists()){
  28. file1.mkdirs();
  29. }
  30.  
  31. //输出文件
  32. File file = new File(filePath+wordFileName);
  33. FileOutputStream fos = new FileOutputStream(file);
  34. out = new OutputStreamWriter(fos, "UTF-8");
  35. template.process(beanParams, out);
  36. return true;
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. return false;
  40. }finally{
  41. try {
  42. if(out != null) {
  43. out.close();
  44. }
  45. } catch (IOException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }

点击导出可生成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. WPF Path和图形

    <Window x:Class="GeometryDemo.MainWindow" xmlns="http://schemas.microsoft.com/winf ...

  2. sql执行分页查询

    declare  @PageSize int,@PageIndex int;set @PageSize=5;set @PageIndex=2;WITH Pagination AS(  SELECT * ...

  3. Android项目实战(四十):在线生成按钮Shape的网站

    原文:Android项目实战(四十):在线生成按钮Shape的网站 AndroidButton Make  右侧设置按钮的属性,可以即时看到效果,并即时生成对应的.xml 代码,非常高效(当然熟练的话 ...

  4. 经典面试编程题--atoi()函数的实现(就是模拟手算,核心代码就一句total = 10 * total + (c - '0'); 但是要注意正负号、溢出等问题)

    一.功能简介 把一个字符串转换成整数 二.linux c库函数实现 /*** *long atol(char *nptr) - Convert string to long * *Purpose: * ...

  5. Image Paragraph论文合辑

    A Hierarchical Approach for Generating Descriptive Image Paragraphs (CPVR 2017) Li Fei-Fei. 数据集地址: h ...

  6. Win10《芒果TV》商店版双十一独家大礼,每日前100名用户免费领取7天VIP

    为答谢大家对Win10<芒果TV>商店版一年以来一如既往的支持,2016年11月1日-11月30日期间,每天登录<芒果TV>UWP版(最新版本v3.1.3)的前100位用户可领 ...

  7. C# Insert批量插入

    最近项目需要做一个批量导入的功能,每次导入最少的记录数都达到1万,之前写了一个通过循环Insert的方法,结果我自己都看不下了.太慢了,所以用了SqlBulkCopy,很快,100万条数据,1分钟都不 ...

  8. ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...

  9. 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等

    优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...

  10. Oracle 宣布 Java 7 生命周期终结

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...