导出Word
我们在做模板的时候最好用 word 2003版来做,如果用07或10做模板,在2003打开是以XML的开式打开的
在word里输入内容,用${}作为占位符
2.将文档保存成XML格式
3.将保存好的方档用文本编辑器打开,查找到所有的占位符,修改占位符中的内容。
Freemarker导出Word
public class ModuleWord implements IModuleWord
{
/*
*Map<String,Object> dataMap 数据
*String wordTemplatePath 模板名称 personalInfo.xml
*File outFile File outFile = new File("AAA.doc")
*/
public void writeWord(Map<String,Object> dataMap,String wordTemplatePath,File outFile)
{
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
Writer outWriter = null;
//获取模板路径 部署后模板路径 WEB-INF\classes\export
//String url = (IModuleExcel.class).getClassLoader().getResource("/export/").getFile();
String url = "D"\\export\\";
try
{
configuration.setDirectoryForTemplateLoading(new File(url));
//加载模板
Template template = configuration.getTemplate(wordTemplatePath);
outWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
template.process(dataMap,outWriter);
outWriter.close();
}catch(Exception e){
outWriter.close();
e.printStackTrace();
}
}
public static void main(String[] args)
{
//Map 的Key与模板中的点位符关联,用Map的value去替换占位符
Map<String,Object> dataMap = new HashMap<String,Object>();
dataMap.put("name","张三");
dataMap.put("sex","男");
dataMap.put("age","20");
ModuleWord moduleWord = new ModuleWord();
File outFile = new File("D:/AAA.doc");
moduleWord.writeWord(dataMap,"xx.xml",outFile);
}
}
导出结果