java导出word文档
1 先准备好一个导出Word文档的模板。
例如:
2.打开doc文件后 ,文件中的另存为,然后选择 保存类型为2003 版本的(*.xml)
3、 刚生成的xml文件里面比较乱,要整理一下,方法如下:
使用Eclipse/idea ,新建一个jsp ,把xml里面的东西覆盖更新刚才的jsp ,ctrl+Shift+F/ ctrl+alt+L 把文件整理一下,在拷贝出来,放到刚才的xml。文件内容就排好了,然后找到刚才我们写的name,sex,adress等地方,修改成为 n a m e , {name} ,name,{sex},R{adress} (这些其实就是占位符,等下我们把我们的实际数据以一对应 的替换掉),
注意:需要注意的是 在列表上方,需要定义集合遍历的名称,例如你后台定义的list 是
<#list listTotol as notice>
例如时间:${notice.Day}
关于自增序号的是:${notice_index+1}
</list>
4.xml完成后.将格式改成ftl格式 (个人基本情况.xml ==>修改成:basic.ftl )(名字最好不要用中文)
5.将 basic.ftl 放到 com.xxx.template文件下(具体放的位置看项目具体结构是怎么样的)
6、导入jar包:freemarker-2.3.18.jar (可自行下载,或者问我要都行)
/**
* @Description 查询得分表--导出通报
* @Author xuwz
* @Date 2021/11/16 14:14
*/
@RequestMapping(value = "/exportScoreWord", method = RequestMethod.POST)
public void exportScoreWord(@RequestBody CheckWorkQueryVO param, HttpServletResponse response) {
try {
SocreWordBean queryDetail = new SocreWordBean();
queryDetail.setNjOnlineRate("100%");
if (null == queryDetail) {
return;
}
Configuration configuration = new Configuration();
//获取保存ftl文件的文件夹
configuration.setClassForTemplateLoading(this.getClass(), "/fileExportFormworks");
configuration.setDefaultEncoding("utf-8");
//获取ftl文件
Template t = configuration.getTemplate("serviceInspection.ftl", "utf-8");
response.reset();
response.setHeader("Content-Disposition",
"attachment;filename=\"" + new String("亡人事故快报.doc".getBytes("GBK"), "iso8859-1") + "\"");
response.setContentType("application/x-download;charset=GBK");
response.setCharacterEncoding("utf-8");
Writer out = response.getWriter();
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("fatality", queryDetail);
t.process(dataMap, out);
}catch (Exception e){
e.printStackTrace();
}
}