项目中,可能会有很多地方需要导出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 cont = new HashMap();// 存储数据
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文件,去找对应的目录加载模板。