ftl模板导出
1、新建 word 文档模板
新建 word 文档(muban.doc),编辑该文档作为样板数据文档;
2、将 word 文档另存为 xml
3、将 xml 文档重命名为 ftl
将上一步的 xml 文件后缀更改为 ftl(muban.ftl) 将上一步建好的模板文档另存为 xml 格式(muban.xml)并格式化;
4、修改 ftl 文件
编辑 ftl 文件,将文件中需动态冲后台加载的数据以变量的形式进行替换,此处的变量支持 javabean。
5、编写 java 代码
private static void ftl() {
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("name", "山河恋梦");
dataMap.put("sex", "男");
dataMap.put("birthYM", "1987年12月");
dataMap.put("national", "汉族");
dataMap.put("party", "中共党员");
dataMap.put("phone", "13812345678");
dataMap.put("diploma", "大学本科");
dataMap.put("school", "四川大学");
String path = System.getProperty("user.dir");
String name = new Date().getTime() + ".doc";
String fileFullPath = MyWordUtil.createWord(dataMap, "muban.ftl", path, name);
System.out.println(fileFullPath);
}
/**
* <p>
* createWord方法主要用于-通过ftl模板文件生成word文件.<br>
* 依赖freemarker-2.3.13.jar.
* </p>
* @param dataMap word中需要展示的动态数据,用map集合来保存
* @param ftlName word模板名称,例如:muban.ftl
* @param filePath 文件生成的目标路径,例如:D:/export/
* @param fileName 生成的文件名称,例如:result.doc
* @return
*/
public static String createWord(Map<String, Object> dataMap, String ftlName, String filePath, String fileName) {
String fileFullPath = filePath + File.separator + fileName;
try {
// 创建配置实例
Configuration configuration = new Configuration();
// 设置编码
configuration.setDefaultEncoding("UTF-8");
// ftl模板文件统一放至 com.cdthgk.export.ftl 包下面
configuration.setClassForTemplateLoading(MyWordUtil.class,"/com/cdthgk/export/ftl");
// 获取模板
Template template = configuration.getTemplate(ftlName);
// 输出文件
File outFile = new File(fileFullPath);
// 如果输出目标文件夹不存在,则创建
if (!outFile.getParentFile().exists()){
outFile.getParentFile().mkdirs();
}
// 将模板和数据模型合并生成文件
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
// 生成文件
template.process(dataMap, out);
// 关闭流
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return fileFullPath;
}