使用freemarker导出word

  1. 先把排版好的word另存为xml格式

  2. 然后把替换的内容使用${}标签替换掉,后缀改成ftl,放到项目中。
  3. 代码

    private static void genWord(Map<String, Object> map) {
         try {
             Configuration configuration = new Configuration(new Version(2, 3, 23));
             configuration.setDefaultEncoding("UTF-8");
             configuration.setClassForTemplateLoading(GenWordUtils.class, "/"); // FTL文件所存在的位置
             Template template = configuration.getTemplate("aa.ftl");
             File outFile = new File("D:/doc/" + map.get("fileName") + ".doc");
             if (!outFile.exists()) {
                 outFile.createNewFile();
             }
             Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
             template.process(map, out);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
    
     public static void main(String[] args) {
         //需要替换的键值
         Map<String, Object> map = Maps.newHashMap();
         map.put("client", "张三");
         map.put("country", "中国");
         genWord(map);
     }