栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

freemarker 生成word,支持循环导出图片 WPS版本

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

freemarker 生成word,支持循环导出图片 WPS版本

痛点

还在为了大量的数据导出到word而烦恼么,还在为枯燥的工作的发愁么,今天让我们用工具的力量来提高生活质量

使用软件及网站

WPS 永远的神
格式化xml文档 XML格式化
千万别用 office 那个贼坑,转换成xml 还要调整格式,WPS开箱即用

第一步写代码

工程架构,我实现了一个完整的后端接口,用postman调用即可,去掉了数据库调用,实际开发按需求加即可,

http://localhost:8080/drm/report/download

效果图

1、代码解释

  • 我们更改的就是这个generateMap() 方法,把需要填充的数据放入map中
  • map可以放入对象、集合也可以放入单个值,如 String、Integer等
2、准备word模板文档,必须使用wps,Office不好用


  • 先在word文档中放入一张图片以便接下来修改循环条件使用
  • 填充模板,语法类似 mybatis 中的格式 ,${s.xx}
  • 对象就是第一步代码解释中 我们像 map 中放入的 key ,属性就是对象的字段,如下面这个Team 对象,调用时我们用${team.num}即可
  • 表单循环原理一样

3、将word文档另存为xml文件

4、格式化xml文档

使用开头使用工具里面的网站即可

5、在需要循环展示的地方加代码

  • 找到第一个需要循环的占位符,然后 找到他的父级标签 在其上面加入 <#list careers as career>表示 循环遍历 careers,类比java 中的增加for遍历。
  • 然后找到 的结束标签 在其下方加入 , 或者根据 循环遍历中最后一个模板占位符锁定末尾

6、给图片加循环代码

  • 在照片外面加上循环 <#list images as image> 结尾也需要加上
  • 首先将那一大串的base64编码替换成 ${image.picture}
  • 然后将 w:name 和
  • 将
7、将xml 文件另存为.ftl文件

8、将ftl文件放入一个文件夹

配置 application.yml

  • tmplPath 为模板存放文件夹
  • autoFlowTmpl 为模板名
  • port 启动端口号
server:
  port: 10086

report:
  tmplPath: D:\wordreport
  autoFlowTmpl: nbaNew.ftl

9、启动项目,并使用postman测试

  • teamIds 随便输入一个值,实际业务场景会用到,测试环境不需要
10、查看生成的报告


通过查看日志,发现报告在系统临时目录,打开查看

项目已上传 github star点起来,附带模板文件 Github地址: Github
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993197.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号