• 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、在需要循环展示的地方加代码

    在这里插入图片描述

    • 找到第一个需要循环的占位符,然后 找到他的父级标签<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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    在这里插入图片描述

    • teamIds 随便输入一个值,实际业务场景会用到,测试环境不需要

    10、查看生成的报告

    在这里插入图片描述
    通过查看日志,发现报告在系统临时目录,打开查看

    在这里插入图片描述

    项目已上传 github star点起来👍,附带模板文件

    Github地址: Github

  • 相关阅读:
    柯桥实用口语学习,韩语口头禅系列短句-恋爱篇
    JMeter - 如何测试REST API / 微服务
    nuc980学习笔记6 - 手把手教 源码编译和YAFFS2文件系统制作
    AIGC之Stable diffusion Version 2_ open_clip.create_model_and_transforms报错问题解决
    基于神经网络的系统辨识,神经网络的种类和特点
    你所不知道的 vscode,汇集历史版本中你可能不知道的新特性
    docker部署博客项目
    基于Open3D的点云处理4-数据结构Kdtree和Octree
    迅为LS2K0500开发板动态电源管理龙芯自主指令架构
    GEE开发之Sentinel-2计算NDVI和数据分析
  • 原文地址:https://blog.csdn.net/qq_40965479/article/details/125446622