`

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

io 
阅读更多

今天写一个功能:批量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;


 
 

  • 大小: 17.4 KB
  • 大小: 35.1 KB
  • 大小: 37.6 KB
  • 大小: 10.1 KB
  • 大小: 31.3 KB
分享到:
评论

相关推荐

    java中将多个excel打包成zip文件下载.rar

    使用`FileOutputStream`创建一个指向目标ZIP文件的输出流,然后用`ZipOutputStream`包装这个输出流。例如: ```java FileOutputStream fos = new FileOutputStream("output.zip"); ZipOutputStream zos = new ...

    java httpServletResponse返回流进行 下载 - 姐呵呵博客专栏 - CSDN博客1

    4. 最后,别忘了关闭流资源: ```java fis.close(); os.flush(); os.close(); ``` 三、获取请求信息 在处理请求时,我们还可以获取请求头信息,例如检查用户使用的浏览器类型: ```java String userAgent = ...

    表格下载Excel.zip

    首先,NPOI是一个开源的API,它提供了读取和写入Excel文件的能力,不仅支持.xls(Excel 2003及以下版本)格式,还支持.xlsx(Excel 2007及以上版本)格式。对于.NET开发者来说,这是一个强大的工具,尤其在处理大量...

    ASPNETCore操作Excel.zip

    // 写入到流并关闭工作簿 workbook.Write(stream); workbook.Close(); // 设置HTTP响应 Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.Headers[...

    C# NPOI2.5.6库,并说明使用方法

    using (FileStream stream = new FileStream("output.xlsx", FileMode.Create, FileAccess.Write)) { workbook.Write(stream); } ``` ### 3. Word操作 NPOI对于Word文档的处理能力相对较弱,主要支持读取。以下...

    数据导出成excel相关代码.zip

    本压缩包"数据导出成excel相关代码.zip"显然包含了用于将数据导出为Excel格式的代码示例。Excel因其易用性、强大的计算能力和丰富的图表功能,成为数据处理的首选工具。本文将详细讲解如何利用编程语言进行数据导出...

    【Unity-插件】unity操作Excel所需的dll Excel.dll

    5. **清理和优化**:最后,记得在操作完成后关闭所有流,并根据需要删除临时文件,以保持项目整洁。 通过这种方式,Unity开发者可以在不离开Unity编辑器环境的情况下,方便地处理Excel数据,提高了工作效率。同时,...

    c#操作EXCEL文件 PNOI方式的PNOI文件包2.3版本

    using var stream = new FileStream("output.xlsx", FileMode.Create, FileAccess.Write); workbook.Write(stream); // 关闭工作簿 workbook.Close(); ``` 这个PNOI文件包2.3版本为开发者提供了高效、稳定的Excel...

    ExcelReadWrite.zip

    filePath = Path.Combine(Application.dataPath, "Resources", "your_excel_file.xlsx"); ``` 为了写入Excel文件,你需要创建一个新的工作簿并添加工作表,然后在工作表中创建行和单元格,最后保存到磁盘。例如: ...

    Unity文档操作使用的NPOI库文件

    stream.Close(); } ``` 4. **运行与调试**:在Unity编辑器或构建后的游戏中,你可以调用这些方法来读写Excel文件,测试其功能是否正常。 通过这种方式,Unity开发者可以利用NPOI的强大功能,轻松地处理Excel文档...

Global site tag (gtag.js) - Google Analytics