xlsx close Stream xlsx写入zip流遇到流关闭 博客分类: POI io流 io
程序员文章站
2024-03-16 15:03:52
...
今天写一个功能:批量excel,解析后,然后和库里面的数据模糊匹配。由于经理要求数据不落地,所以,全程都写在流里面。
解析部分,无论是xls还是xlxs格式都没问题,但是遇到xlsx写入zip流里面的时候会遇到以下问题:zip流竟然关闭了。
代码如下:
主要思路和网上的大同小异:创建zip流,在zip流创建一个Entry,然后把workbook写入zip流中,然后关闭entry。循环,最后关闭zip流。
然后,我强制如果是xlsx格式就不关闭entry试试;
然后没有出现那个“流关闭”的错误了。
但是!!!输出下载的文件虽然是zip,不过里面就是和普通的xlsx解压一样的效果。(tip:xlsx就是zip)
最后,找了很多地方都没找到,然后在*一个帖子里面找到了
https://*.com/questions/16721010/write-a-xssfworkbook-to-a-zip-file?answertab=votes#tab-top
发现就是在写入流的时候,xlsx本身就是zip,劫持了zip流,所以导致了流关闭(其实我并不懂)。
最后,解决方案就是:再创建一个流,把workbook写入新建的流,然后再把新建的流写入zip流中。再正常关闭entry;