java使用ZipOutputStream生成多个Excel数据文件打成压缩包zip下载,总是在第二个Excel文件时在putNextEntry(entry)报 stream close 的错误?
##原因:
XSSFWorkbook的write()方法传去MemoryStream对象后,会自动关闭传入的参数,导致再次使用putNextEntry()方法是报错Stream closed
##解决方法:
将XSSFWorkbook转换成ByteArrayOutputStream,用ByteArrayOutputStream对象将流写入zip对象中
ZipEntry entry = new ZipEntry(fileNames);
zipOut.putNextEntry(entry);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.get(i).write(bos);
bos.writeTo(zipOut);
zipOut.closeEntry();
bos.close();