本篇文章給大家分享的是有關(guān)freemarker中怎么導(dǎo)出word,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
公司主營業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出無錫免費做網(wǎng)站回饋大家。
原圖:
替換后 :
年齡、職位、項目、簡述對應(yīng)的值依次替換成 ${age} ${position} ${project} ${note}
org.springframework.boot spring-boot-starter-freemarker
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(); } } } } /** * 創(chuàng)建 word 文檔 * 必須先設(shè)置response導(dǎo)出配置,然后解析模版,否則會出問題 * @throws IOException */ public static void createFile(File templateDir,String templateName,String docFileName, MaprootMap,HttpServletRequest request, HttpServletResponse response) throws IOException { // response.resetBuffer(); //設(shè)置導(dǎo)出 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(); Mapmap = new HashMap (); //這里map的key和上面模板內(nèi)的${key}保持一致即可 map.put("name", "劉禹錫"); map.put("age", 26); map.put("position", "php開發(fā)"); map.put("project", "不動產(chǎn)登記項目"); map.put("note", "php是世界上最好的語言?。。?); String docFileName ="word-模板導(dǎo)出測試.doc"; String templateName = "ftl2doc.ftl"; FreemarkerUtil.createFile(file,templateName,docFileName, map, req, resp); } catch (IOException e) { e.printStackTrace(); } }
測試結(jié)果導(dǎo)出文件如下:
以上就是freemarker中怎么導(dǎo)出word,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。