/**
* 根据模板生成word
* @param templatePath 模板路径
* @param templateName 模板文件名
* @param dataMap 参数map
* @param targetFilePath 生成文件路径
* @param targetFileName 生成文件名(含后缀)
*/
public static String createDoc(String templatePath, String templateName,Map<String, String> dataMap, String targetFilePath,String targetFileName) {
// 设置模本装置方法和路径
Template t = null;
try {
configuration.setDirectoryForTemplateLoading(new File(templatePath));
t = configuration.getTemplate(templateName,"UTF-8"); // 装载test2.xml模板
} catch (IOException e) {
e.printStackTrace();
return "error:" + e.getMessage();
}
// 输出文档路径及名称
File outFolder = new File(targetFilePath);
if(!outFolder.exists()){
outFolder.mkdirs();
}
File outFile = new File(targetFilePath+File.separator+targetFileName);
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile),"utf-8"));
} catch (Exception e1) {
e1.printStackTrace();
return "error:" + e1.getMessage();
}
try {
t.process(dataMap, out);
out.flush();
logger.info("Freemarker生成word成功:"+targetFileName);
out.close();
} catch (TemplateException e) {
e.printStackTrace();
logger.error("Freemarker生成word失败:"+targetFileName+":"+e.getMessage());
return "error:" + e.getMessage();
} catch (IOException e) {
e.printStackTrace();
logger.error("Freemarker生成word失败:"+targetFileName+":"+e.getMessage());
return "error:" + e.getMessage();
} catch(Exception e){
logger.error("Freemarker生成word失败:"+targetFileName+":"+e.getMessage());
e.printStackTrace();
return "error:" + e.getMessage();
}finally{
if(null!=out){
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "error:" + e.getMessage();
}
}
}
return "success";
}