Java之自定义模板导出为Word实例

时间:2022-05-07 06:23:53

Java之自定义模板导出为Word实例


本文利用Freemarker按照自定义模板.ftl文件生成相应的word文件,效果如下:


 Java之自定义模板导出为Word实例

Java之自定义模板导出为Word实例


操作步骤:


首先下载jar包 Java之自定义模板导出为Word实例


下一步新建一个word文档,注意:模板里面包含中文的话,一定记得改编码方式,楼主在这坑了很长时间,后面运行代码的时候一直报错,说ftl格式不正确。

 Java之自定义模板导出为Word实例


Java之自定义模板导出为Word实例


Java之自定义模板导出为Word实例


在word中输入以下内容:


Java之自定义模板导出为Word实例


Word写好后另存为template.xml文件,同样注意编码问题,输出编码为utf-8。注意这步是另存为!!!!!!!


 Java之自定义模板导出为Word实例


Java之自定义模板导出为Word实例


然后重命名template.xml文件为template.ftl文件


 至此模板文件就建好啦。


Java代码如下:

public class DocUtils {
public static void main(String[] args) throws IOException, TemplateException {
// 要填充的数据, 注意map的key要和word中${xxx}的xxx一致
Map<String,String> dataMap = new HashMap<String,String>();
dataMap.put("username", "Mike");
dataMap.put("sex", "男");
dataMap.put("age", "23");
dataMap.put("address", "uestc");

//Configuration用于读取ftl文件
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");

//configuration.setClassForTemplateLoading(this.getClass(),""); //指定路径的第一种方式(根据某个类的相对路径指定)
configuration.setDirectoryForTemplateLoading(new File("D:/a")); //指定路径的第二种方式,我的路径是D:\a\template.ftl

File outFile = new File("D:\\a\\Mike.doc");// 输出文档路径及名称
Template t = configuration.getTemplate("template.ftl","utf-8");//以utf-8的编码读取ftl文件
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"),10240);
t.process(dataMap, out);
out.close();
}
}


点击运行就大功告成啦~~~~


Java之自定义模板导出为Word实例