[已解决]NPOI Wrong Local header signature: 0x0;Your InputStream was neither an OLE2 stream, nor an OOXM

本文解决使用Java读取Excel文件时出现的WrongLocalheadersignature及非OLE2或OOXM流错误。问题源于多次读取文件到stream而未正确重置stream.Position。通过将文件内容读取到缓冲区并重新定位stream位置来规避此问题。

问题描述:

1.xlsx文件 用new XSSFWorkbook(stream);报错Wrong Local header signature: 0x0;

2.xlsx文件WorkbookFactory.Create(stream)报错Your InputStream was neither an OLE2 stream, nor an OOXM

问题原因:

多次读文件至stream 而stream.Position未恢复。

var stream = file.InputStream;
var buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Position = 0;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值