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 版权协议,转载请附上原文出处链接和本声明。