包含多个.xlsx excel的压缩包在导出时,报 stream close的错误

XSSFworkbook在write的时候 会把传入的流关闭,这样就造成流无法在使用了 这样需要怎么解决图片说明

用java写完文件后需要关闭文件流,如果不关闭就会报这个错。
因为你的文件内容写完了,所以内容没有缺失,但excel检测到文件没有正常结束,所以报错。
另存是由excel重写了完整的文件,所以可以解决问题。
关闭文件例子:
FileOutputStream os = new FileOutputStream("workbook.xls");
wb.write(os);
os.close();

2.1 在有文件构建时不是.xlsx文件格式会报错,构建不成。.xls文件是不行的。

2.2 XSSFWorkbook对象调用 write方法传去MemoryStream对象后,会自动关闭传入的参数。导致往Response.OutputStream会有问题?

做过导出多个情况
Workbook.write(os);之后不要关闭流,没有问题呀。

最后解决办法,先将压缩包里面的xlsx文件转换为xls文件写入到服务器,然后在把这些xls文件压缩成压缩包。