xlsx close Stream xlsx写入zip流遇到流关闭

今天写一个功能:批量excel,解析后,然后和库里面的数据模糊匹配。由于经理要求数据不落地,所以,全程都写在流里面。

解析部分,无论是xls还是xlxs格式都没问题,但是遇到xlsx写入zip流里面的时候会遇到以下问题:zip流竟然关闭了。

 代码如下:


 主要思路和网上的大同小异:创建zip流,在zip流创建一个Entry,然后把workbook写入zip流中,然后关闭entry。循环,最后关闭zip流。

然后,我强制如果是xlsx格式就不关闭entry试试;


 然后没有出现那个“流关闭”的错误了。

但是!!!输出下载的文件虽然是zip,不过里面就是和普通的xlsx解压一样的效果。(tip:xlsx就是zip)

最后,找了很多地方都没找到,然后在stackoverflow一个帖子里面找到了

https://stackoverflow.com/questions/16721010/write-a-xssfworkbook-to-a-zip-file?answertab=votes#tab-top

发现就是在写入流的时候,xlsx本身就是zip,劫持了zip流,所以导致了流关闭(其实我并不懂)。

最后,解决方案就是:再创建一个流,把workbook写入新建的流,然后再把新建的流写入zip流中。再正常关闭entry;


 
 

猜你喜欢

转载自alan9uo.iteye.com/blog/2391724