项目中首先引入freemarker的jar包,下载链接:http://download.csdn.net/download/pnljg/2736572
1、用word文档制作好模板 ceshi.docx
2、将ceshi.docx文件另存为ceshi.xml文件
${name}、${tel}、${address}被拆分了,用notpad++打开ceshi.xml文件,将被拆分的数据重新修改,修改完以后将文件另存为ftl模板文件,ceshi.ftl 具体见下图
修改成如下
3、代码如下
public static void createFile(){
try {
//创建一个合适的Configration对象
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(new File("E:\\test"));
configuration.setObjectWrapper(new DefaultObjectWrapper());
configuration.setDefaultEncoding("UTF-8"); //这个一定要设置,不然在生成的页面中 会乱码
//获取或创建一个模版。
Template template = configuration.getTemplate("ceshi.ftl");
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("name", "张三");
paramMap.put("tel", "19362789462");
paramMap.put("address", "河南省平顶山市湛河区往东300米,豫森时代新城(李四代收)");
Writer writer = new OutputStreamWriter(new FileOutputStream("E:\\test\\success.doc"),"UTF-8");
template.process(paramMap, writer);
System.out.println("恭喜,生成成功~~");
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
4、如果数据需要循环
1)在xml文件中在需要循环的地方加入list标签,并在结束的位置加入list结束符,(如xml文件内容是压缩格式,可在https://c.runoob.com/front-end/710 地址中格式化,然后修改内容)
2)word文档中循环位置的名称要用以上list中起的别名blfsxx
3)输出效果如下