使用POI解析Excel中却得到了异常“无效头标识”(Use POI to parse Excel

2019-06-26 20:21发布

我试图使用Apache POI(版本3.6)来解析Excel的.xls文件,但只拿到了异常:

java.io.IOException: Invalid header signature; read 0x07B1FD124BEDF108, expected 0xE11AB1A1E011CFD0

我用Google搜索了一些成绩,基本上说,“该文件其实并不是一个有效的Excel文件(即.csv,依此类推),但后缀.xls的结束”。 但我敢肯定,我的Excel文件是有效的(在Excel97-2003格式)。

对于保密的考虑,我不能发布我的excel,但是当我用emacs hexl模式来查看这个二进制excel文件,标题是:

D0CF 11E0 A1B1 1AE1

我认为这正是POI预期( E11AB1A1E011CFD0 ,但以big-endian)。 但是,为什么我得到的异常?

!顺便说一句,如果我使用vim用命令%XXD查看相同的excel文件,我得到了一个头不同于eamcs:

C390 C38F 11C3 A0C2

而整个二进制文件似乎完全不同。 我不明白。

感谢您的帮助!

Answer 1:

如果您收到异常,那么你的文件确实是不是真正的.xls文件。 这反而或者是一些其他的文件,重命名为具有.xls扩展名,或损坏的文件。

我建议你尝试打开在Excel文件,并做了另存为。 这可能会给你一个提示,文件类型。 如果不是这样,做一个另存为为Excel的.xls,然后你就可以打开该文件

我不知道你的文件是什么(我不认头),但我可以向你保证,这不是OLE2头为一个有效的.xls文件会有。

这有可能是Apache的蒂卡也许能够制定出什么样的二进制文件是的,所以你可以始终与提卡-应用罐子尝试



Answer 2:

只是一个想法,如果你使用maven在资源标签过滤确保设置为false。 否则,行家往往会在复制阶段腐败的XLS文件在你的pom.xml



文章来源: Use POI to parse Excel but got exception “Invalid Header Signature”