真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

freemarker中怎么導(dǎo)出word

本篇文章給大家分享的是有關(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)站回饋大家。

1.新建word文檔,導(dǎo)出預(yù)期如下

freemarker中怎么導(dǎo)出word

2.另存為xml文件

freemarker中怎么導(dǎo)出word

3.編輯xml,將文字替換成表達式 ${argname}

原圖:
freemarker中怎么導(dǎo)出word

替換后 :

freemarker中怎么導(dǎo)出word

年齡、職位、項目、簡述對應(yīng)的值依次替換成 ${age} ${position} ${project} ${note}

4.修改文件名稱為:ftl2doc.ftl,放到項目里

freemarker中怎么導(dǎo)出word

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();
                }
            }
        }
    }


    /**
     * 創(chuàng)建 word 文檔
     * 必須先設(shè)置response導(dǎo)出配置,然后解析模版,否則會出問題
     * @throws IOException
     */
    public static void createFile(File templateDir,String templateName,String docFileName, Map rootMap,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();
            Map map = 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

以上就是freemarker中怎么導(dǎo)出word,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章標題:freemarker中怎么導(dǎo)出word
文章地址:http://weahome.cn/article/jihpjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部