XSSFWorkbook对象 进行zip打包时 用write资源流自动关闭处理办法
程序员文章站
2022-07-05 08:28:15
XSSFWorkbook对象的write方法内会将传入的资源流自动关闭 导致下载excel失败 错误代码 解决方法: 将XSSFWorkbook转换成ByteArrayOutputStream,用ByteArrayOutputStream对象将流写入zip对象中 ......
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();
上一篇: 手写Ajax的意义所在,从青铜到钻石!
下一篇: 声明式事务管理详解