POI读取excel报java.io.IOException: Failed to read zip entry source

今晚用POI读取excel文件报了以下这个错,还是第一次见。可是.xlsx格式的文件用excel打开是正常。为啥会报错呢?

Exception in thread "main" java.io.IOException: Failed to read zip entry source
    at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:103)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324)
    at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:295)
    at com.payeco.base.common.util.ExcelUtil.read(ExcelUtil.java:269)
    at Test.main(Test.java:16)
Caused by: java.util.zip.ZipException: invalid entry size (expected 0 but got 1052 bytes)
    at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:384)
    at java.util.zip.ZipInputStream.read(ZipInputStream.java:196)
    at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureFile.java:220)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)

原因:对比生成excel文件的代码和读取excel的代码,终于发现了问题,

生成excel文件时用的是:

SXSSFWorkbook wb = new SXSSFWorkbook(100);
wb.setCompressTempFiles(true);

读取文件用的:

XSSFWorkbook

SXSSFWorkbook  生成的excel 用XSSFWorkbook读取就会报错,因为前者开启了压缩。所以要特别处理一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值