痛点
还在为了大量的数据导出到word而烦恼么,还在为枯燥的工作的发愁么,今天让我们用工具的力量来提高生活质量
使用软件及网站
WPS
永远的神格式化xml文档
XML格式化 千万别用 office 那个贼坑,转换成xml 还要调整格式,WPS开箱即用
第一步写代码
工程架构,我实现了一个完整的后端接口,用postman调用即可,去掉了数据库调用,实际开发按需求加即可,
效果图
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、在需要循环展示的地方加代码
- 找到第一个需要循环的占位符,然后 找到他的父级标签
<w:tr>
在其上面加入<#list careers as career>
表示 循环遍历 careers,类比java 中的增加for遍历。 - 然后找到
<w:tr>
的结束标签 在其下方加入</#list>
, 或者根据 循环遍历中最后一个模板占位符锁定末尾
6、给图片加循环代码
- 在照片外面加上循环
<#list images as image>
结尾也需要加上</#list>
- 首先将那一大串的base64编码替换成 ${image.picture}
- 然后将
w:name
和<v:imagedata
中的内容替换成${image.picName}
- 将
<v:shape id
中的id 替换成${image.id}
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