Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to export word in freemarker

2025-02-28 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >

Share

Shulou(Shulou.com)06/02 Report--

This article is about how to export word in freemarker. Xiaobian thinks it is quite practical, so share it with everyone to learn. I hope you can gain something after reading this article. Let's not say much. Let's take a look at it together with Xiaobian.

1. Create a new word document, export expected as follows

2. Save as xml file

3.编辑xml,将文字替换成表达式 ${argname}

原图:

替换后 :

年龄、职位、项目、简述对应的值依次替换成 ${age} ${position} ${project} ${note}

4.修改文件名称为:ftl2doc.ftl,放到项目里

5.查看pom依赖是否添加若没有需添加freemarker依赖 org.springframework.boot spring-boot-starter-freemarker 6.编写工具类package org.jeecg.modules.system.util;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.net.URLEncoder;import java.util.Locale;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import freemarker.template.*;public class FreemarkerUtil { private static final Object LOCK = new Object(); private static Configuration cfg; private static FreemarkerUtil ftl ; private FreemarkerUtil(File file) throws IOException { cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(file); cfg.setEncoding(Locale.getDefault(), "UTF-8"); cfg.setObjectWrapper(new DefaultObjectWrapper()); } private static void check(File file) { if (ftl == null) { synchronized (LOCK) { try { ftl = new FreemarkerUtil(file); } catch (IOException e) { e.printStackTrace(); } } } } /** * 创建 word 文档 * 必须先设置response导出配置,然后解析模版,否则会出问题 * @throws IOException */ public static void createFile(File templateDir,String templateName,String docFileName, Map rootMap,HttpServletRequest request, HttpServletResponse response) throws IOException { // response.resetBuffer(); //设置导出 response.addHeader("Cache-Control","no-cache"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/vnd.ms-word;charset=UTF-8"); String ua = request.getHeader("user-agent"); ua = ua == null ? null : ua.toLowerCase(); if(ua != null && (ua.indexOf("firefox") > 0 || ua.indexOf("safari")>0)){ try { docFileName = new String(docFileName.getBytes(),"ISO8859-1"); response.addHeader("Content-Disposition","attachment;filename=" + docFileName); } catch (Exception e) { } }else{ try { docFileName = URLEncoder.encode(docFileName, "utf-8"); response.addHeader("Content-Disposition","attachment;filename=" + docFileName); } catch (Exception e) { } } check(templateDir); //解析模版 Template temp = cfg.getTemplate(templateName, "UTF-8"); PrintWriter write = response.getWriter(); try { temp.process(rootMap, write); } catch (TemplateException e) { e.printStackTrace(); }finally { if(write != null){ write.flush(); write.close(); } } }}

7.测试接口

@Resource private ResourceLoader resourceLoader; @GetMapping(value = "/wordTest") public void wordTest(HttpServletRequest req,HttpServletResponse resp){ String path = "templates/word"; org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:"+path); try { File file = resource.getFile(); Map map = new HashMap(); //这里map的key和上面模板内的${key}保持一致即可 map.put("name", "刘禹锡"); map.put("age", 26); map.put("position", "php开发"); map.put("project", "不动产登记项目"); map.put("note", "php是世界上最好的语言!!!"); String docFileName ="word-模板导出测试.doc"; String templateName = "ftl2doc.ftl"; FreemarkerUtil.createFile(file,templateName,docFileName, map, req, resp); } catch (IOException e) { e.printStackTrace(); } }

测试结果导出文件如下:

以上就是freemarker中怎么导出word,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Internet Technology

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report