目录

第一步:创建Word模板

第二步:整理好数据,核对好数据要填充的位置

第三步:使用工具类生成word文件

工具类:


第一步:创建Word模板

创建需要的模板

另存为:单一网页文件

文件名最好改为英文,防止后续因编码格式导出失败

经过上面几步操作得到如下文件

将这个文件放入模板

打开刚才移入的文件里面有很多标签,我们不需要关注那么多,只需要ctrl+f 搜索我们刚才在word写入的内容就可以,找到这个位置

使用freemaker语法替换内容 

到此模板已经搞定!~

第二步:整理好数据,核对好数据要填充的位置

map的key要与模板所要替换的内容名称一致

public void exportDoc(@PathVariable("id") Integer pid,HttpServletResponse response) throws Exception {//查询所有标题和内容List<BulletinDzh> list = query(pid);String name = list.get(0).getName();list.get(0).setName(null);Map<String, Object> dataMap = new HashMap<>(16);dataMap.put("list", list);dataMap.put("name",name);FileUtils.freemarkerExport("E:\\idea_Project\\nanhang\\xqyp\\src\\main\\resources\\code","export.mht",dataMap,"E:\\idea_Project\\nanhang\\xqyp\\src\\main\\resources\\code",name+".docx",response);}

第三步:使用工具类生成word文件

  FileUtils.freemarkerExport(//模板文件所在的路径"E:\\idea_Project\\nanhang\\xqyp\\src\\main\\resources\\code",//模板文件的名称"export.mht",//整理好的数据dataMap,//生成的word文件存放位置"E:\\idea_Project\\nanhang\\xqyp\\src\\main\\resources\\code",name+".docx",response);

至此,使用freemarker模板引擎导出word文件已经成功!~

注意:如果数据有样式,导出的数据也是会带有样式.如下图所示

工具类:

package com.sinosoft.springbootplus.emergencyrescue.util;import freemarker.template.Configuration;
import freemarker.template.Template;import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Map;/*** @author lzf* @date 2022-08-25-15:51*/public class FileUtils {/*** 使用 freemarker 生成word文档** @param templateDir  模板所在目录路径* @param templateName 模板 例如:xxx.ftl* @param data         数据* @param fileSavePath 文档生成后,存放的路径* @param filename     生成后的文件名称,使用英文* @param response* @throws Exception*/public static void freemarkerExport(String templateDir, String templateName, Map<String, Object> data, String fileSavePath, String filename, HttpServletResponse response) throws Exception {// 1.设置 freeMarker的版本和编码格式Configuration configuration = new Configuration();configuration.setDefaultEncoding("UTF-8");// 2.设置 freeMarker生成Word文档,所需要的模板的路径configuration.setDirectoryForTemplateLoading(new File(templateDir));// 3.设置 freeMarker生成Word文档所需要的模板 ---> xxx.ftlTemplate t = null;try {// 模板文件名称t = configuration.getTemplate(templateName);} catch (IOException e) {throw new IOException("获取 ftl模板失败!" + e.getMessage());}// 4.生成 Word文档的全路径名称File outFile = new File(fileSavePath + filename);// 5.创建一个 Word文档的输出流Writer writer = null;try {writer = new OutputStreamWriter(new FileOutputStream(outFile), "utf-8");} catch (Exception e) {throw new Exception(e.getMessage());}try {// 6.装载数据t.process(data, writer);response.setCharacterEncoding("utf-8");response.addHeader("Content-Disposition", "attachment;filename=" + filename);response.setContentType("application/force-download");// 7.读取生成好的 Word文档File file = new File(fileSavePath + filename);FileInputStream is = new FileInputStream(file);OutputStream os = response.getOutputStream();byte[] b = new byte[1024];int length;while ((length = is.read(b)) > 0) {os.write(b, 0, length);}os.flush();os.close();writer.flush();writer.close();} catch (IOException e) {throw new IOException(e.getMessage());} finally {deleteTempFile(fileSavePath + filename);}}/*** 删除临时生成的文件*/public static void deleteTempFile(String filePath) {File f = new File(filePath);f.delete();}
}

使用freemarker模板引擎导出word文件相关推荐

  1. ftl模板导出excel_使用freemarker模板引擎导出word或excel文件(代码实现)

    在项目中我们会遇到很多导入导出excel或者word 有时候一些比较复杂的表格设计用freemarker 来做为模板导出还是很不错的 具体操作 我们要针对该列表做数据导出模板 在桌面右键新建一个exc ...

  2. Java项目中利用Freemarker模板引擎导出--生成Word文档

    应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 资源下载:https://download.csdn.net/download/weixin_41367523 ...

  3. 利用freemarker模板引擎进行word导出

    FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现 ...

  4. springboot项目使用beetl模板引擎生成word文件

    一.详情可查看官网 1.官方网址:beetl官网 一.简单测试beetl生成word文件 1.在springboot项目中添加beetl的依赖 <dependency><groupI ...

  5. freemarker 导出word文件中包含图片

    最近做的工作中出现的问题记录 在使用freemarker导出word文件的时候,使用wps做模板,出现的情况与网上的情况不同. 在查看网上的例子和资料的时候,模板中的样子是类似于这样的 <w:p ...

  6. 【Apache POI】Java Web根据模板导出word文件

    最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...

  7. POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)

    POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...

  8. Springboot--使用POI,根据word模板导出word文件

    需求:根据一个word模板,在程序中替换模板中的参数,然后根据这个模板导出word文件. 引入POI对word操作的依赖: <dependency><groupId>org.a ...

  9. Beetl 模板引擎生成word以及excel总结

    Beetl Java模板引擎生成word excel 之前项目中使用freemarker和POI进行word以及excel的模板导出,在使用的过程中为了解决一些小问题,意外的接触了Beetl这款模板生 ...

最新文章

  1. java解析lrc_java中用正则表达式解析LRC文件
  2. Linux iptables用法与NAT
  3. Web前端开发人员和设计师必读文章推荐【系列六】
  4. 医学影像 | 谷歌算法提升结肠镜检查的覆盖率, 大幅降低患癌风险
  5. 找不到ffmpeg.dll无法继续执行代码怎么办_2020年,小规模增值税3%减按1%征收,那么一般纳税人该怎么办?...
  6. 【leetcode】力扣算法:杨辉三角 java语言解题
  7. 缓和曲线计算方式实现,全站仪中道路数据计算
  8. 计算机网络冗余,计算机网络基础知识之循环冗余码
  9. 计算机有线无线都无法上网,有线能上网无线不能上网 有线能用无线不能用
  10. ecu的c语言编程,ecu中的程序是如何编写的
  11. 使用python脚本和crontab在阿里云实现优矿自动签到
  12. windows防火墙是干什么的_请教个人防火墙是做什么用的,
  13. t420i升级固态硬盘提升_surface laptop3固态升级指南——拆机、换固态硬盘、重装系统...
  14. 关于计算机未来理想,关于未来与梦想的作文
  15. InputArray和OutputArray的那些事
  16. Wireshark 4.0.0RC1 版本前瞻
  17. hdu6172(Array Challenge)-Berlekamp-Massey算法
  18. 期刊论文标脚注!!!
  19. 各大账号申请操作步骤
  20. 意甲体育看利来娱乐:萨勒尼塔纳全身而退,萨索洛捍卫主场荣誉

热门文章

  1. MPEG音频编码分析
  2. Java串口编程学习1-环境配置(64位Win7)
  3. 字节运营增长类实习生面经助攻拿OFFER(含投递话术问答)热乎的
  4. 2022年春招实习十四面(嵌入式面经)(已完结)
  5. AIDE的使用规则配置
  6. php生成字母头像,php-initial-avatar-generator
  7. 身体彻底排毒的简单方法,一目了然
  8. 刚才溜达论坛,看到一个刚开的论坛,就是敏捷开发,那他到底是啥东西呢?
  9. 联想在bios中怎么设置U盘启动
  10. OKCoin徐明星:区块链技术解读及应用实践