xssfworkbook对象的write方法内会将传入的资源流自动关闭 导致下载excel失败
错误代码
outputstream out = response.getoutputstream();
zipoutputstream zos = new zipoutputstream(out);
xssfworkbook workbook = new xssfworkbook();
// 将文件写入zip内,即将文件进行打包
zos.putnextentry(new zipentry(filename + "(" + uuid.randomuuid() + ")." + typename));
// 此处将自动关闭zos资源
workbook.wirte(zos);
解决方法: 将xssfworkbook转换成bytearrayoutputstream,用bytearrayoutputstream对象将流写入zip对象中
outputstream out = response.getoutputstream();
zipoutputstream zos = new zipoutputstream(out);
xssfworkbook workbook = new xssfworkbook();
// 将文件写入zip内,即将文件进行打包
zos.putnextentry(new zipentry(filename + "(" + uuid.randomuuid() + ")." + typename));
bytearrayoutputstream bos = new bytearrayoutputstream();
workbook.write(bos);
bos.writeto(zos);
zos.closeentry();
// 当所有文件打包完成后关闭zos资源
zos.close();
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!