1. 程式人生 > >java匯出word模板

java匯出word模板

專案中,可能會有很多地方需要匯出word模板,首先,你需要有模板,然後,模板另存為xml格式。

package com;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.cache.FileTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class CreateWord {

	public static void main(String[] args) {
		Map<String, Object> cont = new HashMap<String, Object>();// 儲存資料

		Configuration cfg = new Configuration();

		TemplateLoader templateLoader = null;

		try {
			//模板的路徑
			File fir = new File("W:/test/wswhr/");
			
			//生成檔案的路徑及檔名。
			File outFile = new File("W:/test/wswhr/委託創作合同.doc");

			Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

			// 使用FileTemplateLoader
			//制定模板路徑
			templateLoader = new FileTemplateLoader(fir);//
			String tempname = "委託創作合同.xml";

			cfg.setTemplateLoader(templateLoader);
			Template t = cfg.getTemplate(tempname, "UTF-8");
			
			t.process(cont, out);
			out.flush();
			out.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
注意,裡面的

cfg.setTemplateLoader(templateLoader);

這一句,是指定模板所在目錄。

如果只是執行一些測試類,或者本地main方法可以用這個。

如果是在線上伺服器,請用下面的程式碼來制定模板路徑。

//建立配置例項 
	        Configuration configuration = new Configuration();
       
	        //設定編碼
            configuration.setDefaultEncoding("UTF-8");
            
            //ftl模板檔案統一放至 com.lun.template 包下面
            configuration.setClassForTemplateLoading(WordUtil.class, "/cn/digitalpublishing/templates/");
            
            //獲取模板 
            Template template = configuration.getTemplate(templateName);

這裡的,制定模板路徑的方法是,setClassForTemplateLoading.

望文生義也知道,根據指定的class檔案,去找對應的目錄載入模板。