使用freemarker模板引擎导出word文件
目录
第一步:创建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文件相关推荐
- ftl模板导出excel_使用freemarker模板引擎导出word或excel文件(代码实现)
在项目中我们会遇到很多导入导出excel或者word 有时候一些比较复杂的表格设计用freemarker 来做为模板导出还是很不错的 具体操作 我们要针对该列表做数据导出模板 在桌面右键新建一个exc ...
- Java项目中利用Freemarker模板引擎导出--生成Word文档
应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 资源下载:https://download.csdn.net/download/weixin_41367523 ...
- 利用freemarker模板引擎进行word导出
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现 ...
- springboot项目使用beetl模板引擎生成word文件
一.详情可查看官网 1.官方网址:beetl官网 一.简单测试beetl生成word文件 1.在springboot项目中添加beetl的依赖 <dependency><groupI ...
- freemarker 导出word文件中包含图片
最近做的工作中出现的问题记录 在使用freemarker导出word文件的时候,使用wps做模板,出现的情况与网上的情况不同. 在查看网上的例子和资料的时候,模板中的样子是类似于这样的 <w:p ...
- 【Apache POI】Java Web根据模板导出word文件
最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...
- POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)
POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...
- Springboot--使用POI,根据word模板导出word文件
需求:根据一个word模板,在程序中替换模板中的参数,然后根据这个模板导出word文件. 引入POI对word操作的依赖: <dependency><groupId>org.a ...
- Beetl 模板引擎生成word以及excel总结
Beetl Java模板引擎生成word excel 之前项目中使用freemarker和POI进行word以及excel的模板导出,在使用的过程中为了解决一些小问题,意外的接触了Beetl这款模板生 ...
最新文章
- java解析lrc_java中用正则表达式解析LRC文件
- Linux iptables用法与NAT
- Web前端开发人员和设计师必读文章推荐【系列六】
- 医学影像 | 谷歌算法提升结肠镜检查的覆盖率, 大幅降低患癌风险
- 找不到ffmpeg.dll无法继续执行代码怎么办_2020年,小规模增值税3%减按1%征收,那么一般纳税人该怎么办?...
- 【leetcode】力扣算法:杨辉三角 java语言解题
- 缓和曲线计算方式实现,全站仪中道路数据计算
- 计算机网络冗余,计算机网络基础知识之循环冗余码
- 计算机有线无线都无法上网,有线能上网无线不能上网 有线能用无线不能用
- ecu的c语言编程,ecu中的程序是如何编写的
- 使用python脚本和crontab在阿里云实现优矿自动签到
- windows防火墙是干什么的_请教个人防火墙是做什么用的,
- t420i升级固态硬盘提升_surface laptop3固态升级指南——拆机、换固态硬盘、重装系统...
- 关于计算机未来理想,关于未来与梦想的作文
- InputArray和OutputArray的那些事
- Wireshark 4.0.0RC1 版本前瞻
- hdu6172(Array Challenge)-Berlekamp-Massey算法
- 期刊论文标脚注!!!
- 各大账号申请操作步骤
- 意甲体育看利来娱乐:萨勒尼塔纳全身而退,萨索洛捍卫主场荣誉