领导让我写一个将数据导出excel表格的功能,可是我将数据导出到了我自己本地我就以为成功了,我以为前端传给我地址之后,我就可以将导出来的数据保存到他的本地,但是结果是,前端传给后端(服务端)地址,导出数据到服务端……
正确的写法是后端给前端一个输出流,然后前端获得输出流,在保存到他自己的本地:
public void ExportEnterpriseInfo(@RequestBody Map names, HttpServletResponse response) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("企业查询结果", "UTF-8");
response.setContentType("application/force-download");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
response.setHeader("Content-Type","application/octet-stream;charset=utf-8");
/**准备数据*/
List<ExportEnterpriseInfo> list = data(names);
/**导入结果流*/
EasyExcel.write(response.getOutputStream(), ExportEnterpriseInfo.class).sheet("企业查询结果").registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).doWrite(list);
}
在这个过程中还遇到了文件名乱码的问题,这是因为postman的问题,如果是浏览器下载的话,文件名是没有问题的。
嘤嘤嘤
一个集坚强与自信于一身的菇凉。