问题描述:
在导出文件时候,数据较大的可以正常导出,而数据较小的导出时候
文件出现异常 。
修改前的代码:
HSSFWorkbook workbook = exportPBOMExcel(malist, bom);
OutputStream output = response.getOutputStream();
workbook.write(output);
response.setHeader("Content-disposition", "attachment; filename=details.xls");
response.setContentType("application/vnd.ms-excel");
关于异常原因的猜测:
由于文件内容太小,输出的excel文件太小,没有办法达到系统自动flush的最小值,然而OutputStream又没有手动flush|close导致
修改后的代码:
HSSFWorkbook workbook = exportPBOMExcel(malist, bom);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos);
Resource resource = new ByteArrayResource(bos.toByteArray());
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/vnd.ms-excel"))
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"))
.body(resource);
总结:
出现该问题的原因是在OutputStream结束后忘记fluhs close;