项目中,可能会有很多地方需要导出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文件,去找对应的目录加载模板。