EasyExcel ExcelGenerateException: Can not close IO问题解决
EasyExcel 导出 zip包时 ExcelWriter 未正确关闭导致 ExcelGenerateException: Can not close IO
排除 依赖问题 之后
直接上代码
zipOut = new ZipOutputStream(response.getOutputStream());
ZipEntry zipEntry = new ZipEntry("报名数据_" + DateUtils.format(new Date(), DateUtils.DATE_SHORT_MONTHDAY_FORMAT) + ".xlsx");
zipOut.putNextEntry(zipEntry);
// 数据查询
List<ApplyUserStaticVO> list = null ; // 数据
// 单位
int unitCountBjDay = 1;
// 人数
int applyCountBjDay = 2;
outputStream = new ByteArrayOutputStream();
ExcelWriter excelWriter = null;
try {
WriteSheet sheet = EasyExcel.writerSheet(0, "报名数据"))
.registerWriteHandler(new ValueCellWriteHandler(unitCountBjDay+"",applyCountBjDay+""))
.head(ApplyUserStaticVO.class).build();
excelWriter = EasyExcel.write(outputStream).autoCloseStream(false).build();
excelWriter.write(list, sheet);
} catch (Exception e) {
throw new RuntimeException("导出Excel异常", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
//刷到输出流中
outputStream.writeTo(zipOut);
zipOut.closeEntry();
关键代码
excelWriter = EasyExcel.write(outputStream).autoCloseStream(false).build();
autoCloseStream 自动关闭 设置 false
excelWriter.write 之后 执行 excelWriter.finish();
之后
zipOut.closeEntry();
outputStream.flush();
outputStream.close();