欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-22 10:12:43
...

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

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

xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
 主要思路和网上的大同小异:创建zip流,在zip流创建一个Entry,然后把workbook写入zip流中,然后关闭entry。循环,最后关闭zip流。

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

xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
 然后没有出现那个“流关闭”的错误了。

但是!!!输出下载的文件虽然是zip,不过里面就是和普通的xlsx解压一样的效果。(tip:xlsx就是zip)
xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io

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

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

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

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

xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
 
 

  • xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
  • 大小: 17.4 KB
  • xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
  • 大小: 35.1 KB
  • xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
  • 大小: 37.6 KB
  • xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
  • 大小: 10.1 KB
  • xlsx close Stream xlsx写入zip流遇到流关闭
            
    
    博客分类: POI io流 io
  • 大小: 31.3 KB
相关标签: io