freemarker基于docx格式创建模板导出带图片word文件 | 您所在的位置:网站首页 › 创建docx文件找不到文件 › freemarker基于docx格式创建模板导出带图片word文件 |
目录 一、实现思路: 二、基于docx格式文件创建模板: (1)替换数据占位符: (2)将替换数据占位符文件强制修改zip格式: (3)获取文本数据文件document.xml: (4)获取图片依赖文件document.xml.rels: (5)占位符修改为freemarker值替换符: (6)添加if-else for循环等逻辑: (7)完成freemarker模板创建: 三、拷贝word生成工具类: 四、代码controller中调用word工具类: 一、实现思路: (1)将给定的word文件强转为zip格式,获取并制作freemarker的文本数据模板文件、图片依赖模板文件; (2)通过freemarker动态填充数据后生成临时word的文本数据文件、临时图片依赖; (3)然后通过流合并,将生成的word文本数据文件、图片依赖文件、要插入图片,替换到默认的zip压缩包内对应的文件,图片保存在word/media中,流输出一个临时word文件; (4)通过流读取临时word文件,将流传递给浏览器,实现word文件导出; (5)最后删除word临时文件; 将word模板中动态数据位置,用自己设定好对应的数据字段名称进行替换,注意word模板数据最终是放在一个map中的,因此要保证数据字段名不能重复。 将数据占位符修改好的docx格式的word文件,强制修改后缀为zip,然后解压文件。解压后文档结构如下: 复制zip解压后的word/document.xml,该文件为word中文本内容数据文件,我们需要替换的占位符全部在该文件中。 复制zip解压后的word/_rels/document.xml.rels,该文件中为word图片依赖资源文件,如果我们需要动态插入图片,那么我们需要在该文件中插入我们要插入图片的依赖资源,然后在document.xml中对应位置插入图片依赖唯一标识符Id值即可: 模板xml中freemaker值替换符号为${},我们需要将要退换的英文变量名称用${}包括起来。 if-else逻辑: if-else-if逻辑: for循环逻辑: 通过freemaker基于docx生成word的最终文件需要以下三个: 文件一:实例zip压缩文件: 就是将模板强制修改为zip格式的压缩文件。 文件二:文本数据模板文件document.xml: 就是自己修改的xml模板文件。 文件三:图片资源依赖模板文件document.xml.rels: 如果有插入图片就需要此文件,也就是自己修改的xml.rels图片依赖模板文件。如果没有插入图片就不需要此文件。 三、拷贝word生成工具类:临时文本数据文件生成: 临时图片依赖数据文件生成: 流合并生成临时word文件: 详情文档汇总整理及word工具类见: https://download.csdn.net/download/lsy_csdn_/11172238 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |