老规矩,导入jar包

<dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.20</version>
        </dependency>

编写word模板,选创建一个word文档,写入你想导出内容的格式

另存为文件后缀名为xml(不要直接改文件的后缀),可能有些编译器打开xml文件没有自动格式化,我是用nodepad++,下载的xml tools插件来搞的,找到需要动态赋值的那段代码

将${p.updateDate} 中间的东西都删除,改为这种,所有需要动态赋值的都需要修改

保存后修改后缀为ftl,导入你的项目template文件夹中

package com.xwsz.crm.utils;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.alibaba.fastjson.JSON;import freemarker.template.Configuration;
import freemarker.template.Template;public class WordUtils {@SuppressWarnings("unchecked")public static void createWord(Map dataMap,String templateName,String filePath,String fileName){try {//创建配置实例Configuration configuration = new Configuration();//设置编码configuration.setDefaultEncoding("UTF-8");//ftl模板文件configuration.setClassForTemplateLoading(WordUtils.class,"/");//获取模板Template template = configuration.getTemplate(templateName);//输出文件File outFile = new File(filePath+File.separator+fileName);//如果输出目标文件夹不存在,则创建if (!outFile.getParentFile().exists()){outFile.getParentFile().mkdirs();}//将模板和数据模型合并生成文件Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));//生成文件template.process(dataMap, out);//关闭流out.flush();out.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {/** 用于组装word页面需要的数据 */Map<String, Object> dataMap = new HashMap<String, Object>();List<Map<String,String>> datas = new ArrayList<>();for(int i=0;i<10;i++){Map<String,String> updateInfo = new HashMap<>();updateInfo.put("updateBy","sys");updateInfo.put("updateContent","第"+(i+1)+"次修改");updateInfo.put("updateDate","2022-01-06 15:51:12");updateInfo.put("updateVersion",(i+1)+"");datas.add(updateInfo);}System.err.println(JSON.toJSONString(datas));dataMap.put("updateList",datas);dataMap.put("title","测试文档标题");String filePath = "D:/doc_f/";//文件唯一名称String fileOnlyName = "生成Word文档.doc";/** 生成word  数据包装,模板名,文件生成路径,生成的文件名*/createWord(dataMap, "template/wordTest.ftl", filePath, fileOnlyName);}
}

运行后查看目录下对应文件

项目地址:yanqing/SwaggerToWord (gitee.com)

Spring freemarker word模板导出List数据相关推荐

  1. SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?

    前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...

  2. Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。

    Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题. 适用场景: 1.固定格式的W ...

  3. SpringBoot+EasyPOI word模板导出,含多张图片

    这几天客户提出了新的需求,要求记录要能够导出word,并且里面包含的图片也要导出来,这里借用EasyPOI来进行操作. 参考文章:https://blog.csdn.net/qq_34752942/a ...

  4. poi-tl,根据word模板导出word(表格行循环,表格无表头的情况)

    最近项目里要做一个根据客户提供的word模板导出word的功能,方法有很多,比如easyPoi(对word的支持并不是很好),freeMark(太麻烦不想研究),以及poi-tl, 最后研究了半天发现 ...

  5. Net Core DocXCore 实现word模板导出

    实际工作中,往往有这样的需求,需要导出word,还有各种各样的样式,于是有了word模板导出. 实现以下几个需求: 1.表单导出 2.表格导出 3.表单表格混合导出 4.实际用例测试 解决方案: 实现 ...

  6. 8、jeecg 笔记之 自定义word 模板导出(一)

    8.jeecg 笔记之 自定义word 模板导出(一) 1.前言 jeecg 中已经自带 word 的导出导出功能,其所使用的也是 easypoi,尽管所导出的 word 能满足大部分需求, 但总是有 ...

  7. org.apache.poi往word模板中填充数据(word2003)

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.通过字面意思,我们大概知道这个API是可以用来做 j ...

  8. 利用docxtpl库将excel里的数据向一个word模板里填充数据,并保存为一个word文档

    ###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档. from docxtpl import DocxTemplate import openpyx ...

  9. 在docxtemplater 和 open-docxtemplater-image-module按word模板导出图片 遇到个坑记录下

    在docxtemplater 和 open-docxtemplater-image-module按word模板导出图片 遇到个坑记录下 主要是一直提示 Cannot read property 'pa ...

最新文章

  1. Idea批量修改变量名
  2. [NewLife.XCode]数据层缓存(网站性能翻10倍)
  3. 虚拟机安装mysql_linux虚拟机中安装MySQL
  4. Ubuntu安装搜狗拼音和金山快盘
  5. 如何提高mysql查询效率_如何提高MySQL查询效率
  6. 《父亲家书》选:如何处理考研与工作机会(下)
  7. 最新版easyMule-VeryCD-src v1.1.13编译
  8. c4dr20怎么安装oc渲染器怎么安装_c4d怎么安装oc渲染器/插件
  9. 淘宝 京东 拼多多 唯品会返利 公众号开发
  10. mac时钟屏保_【win/mac】抖音网红八卦时钟屏保动态壁纸,快来体验
  11. linux 卸载skype,在Ubuntu 20.04系统下使用snap和apt安装Skype的方法
  12. 计算机二级C语言辅导考试买啥书,在大学想考计算机二级,请问自学的话需要买什么辅导书,要买好几本是吗?...
  13. 营销:uplift模型
  14. JDBC连接数据库步骤(入门到进阶全)
  15. 关于MapStruct使用expression表达式的小坑
  16. arcgis怎么生成一个html,arcgis desktop 10.x怎么生成1:100万、1:50万等标准图幅经纬网格...
  17. PCL 实现 SAC_IA 算法原理源码解析
  18. 暑期项目实训7.7 flask+darnn继续修改+内网穿透+DSTP论文阅读
  19. 如何计算心跳c语言编程,单片机心率计 电子脉搏计设计(原理图Protues仿真和C程序)...
  20. 2020张宇1000题【好题收集】【第三章:一元函数积分学】

热门文章

  1. Matplotlib可视化50图:气泡图(2)
  2. 《生日——我能否祝自己快乐》
  3. Windows:Arm,我们不合适
  4. python static变量_python static变量
  5. Authentication token manipulation error
  6. idea注释模版配置(吐血推荐!!!)
  7. vue 重置按钮功能实现
  8. Boosting Black-Box Attack with Partially Transferred Conditional Adversarial Distribution
  9. 深度残差网络(Deep Residual Network)ResNet
  10. (7)OpenGL多视口变换函数:glViewport使用