java导出Word文档(freemarker)超简单

  • Post author:
  • Post category:java


1.先找出将要生成的Word文档模板(也是一份Word文档,只不过里边写了占位符)。

2.将模板文件另存为xml文件,转为xml之后并把后缀名改为ftl。

3.项目中引入freemarker依赖包。

4.声明map用于存放数据,这里map的key对应模板文件里的${key}.

5.声明Word文档的导出公共类。

public class WordUtil {
	public static void word(String ftl,String tb,String ryname,Map<String, Object> map) throws TemplateException, IOException{
		HttpServletResponse response = ServletActionContext.getResponse(); 
		response.reset(); 
		Configuration configuration = new Configuration();
        configuration.setDefaultEncoding("utf-8");
        //获取模板所在的路径
        configuration.setDirectoryForTemplateLoading(new File("D:/template/"));
        //以utf-8的编码读取ftl文件
        Template t =  configuration.getTemplate(ftl,"utf-8");
        String fileName = URLEncoder.encode(tb+"-"+ryname,"UTF-8") + ".doc";
        //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
        response.setContentType("multipart/form-data");
        //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)
        response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
        Writer out1 = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), "utf-8"),10240);
        t.process(map, out1);
        out1.close();
	} 

}

6.将存数据的map传入这个静态方法中,运行即可,效果是可以弹出下载选择窗口,选择下载位置。

注:如果是list需要循环:

ftl文件:

后台存数据:

map的key列表名称和ftl文件的列表名称一致。

2.复选框打钩:



版权声明:本文为rjkkaikai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。