ftl模板导出word简历

这篇博客介绍了如何利用FreeMarker(FTL)模板语言将一个预设的Word文档模板转换为XML,然后编辑FTL文件以动态填充数据,并通过Java代码生成Word文档。步骤包括新建Word模板、转换为XML、编辑FTL、编写Java代码以实现数据动态加载到Word中。此方法适用于批量生成个性化Word文档。
摘要由CSDN通过智能技术生成

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;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

princeAladdin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值