当前位置: 首页 > 面试题库 >

使用POI解析Excel,但出现异常“无效标题签名”

长孙泉
2023-03-14
问题内容

我正在尝试使用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-mode查看此二进制excel文件时,标头为:

D0CF 11E0 A1B1 1AE1

我认为这正是POI期望的(E11AB1A1E011CFD0,但使用大端字节序)。但是为什么我要例外?

顺便说一句,如果我在命令%!xxd中使用vim来查看相同的excel文件,则会得到与eamcs不同的头文件:

C390 C38F 11C3 A0C2

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

感谢您的帮助!


问题答案:

如果收到该异常,则您的文件实际上不是真正的.xls文件。相反,它将是其他文件,重命名为.xls扩展名的文件或损坏的文件。

建议您尝试在Excel中打开文件,然后另存为。这可能会提示您有关文件类型。如果没有,请另存为Excel .xls,然后就可以打开该文件了。

我不知道您的文件是什么(我无法识别标头),但是我可以向您保证,它不是有效的.xls文件所具有的OLE2标头。

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



 类似资料:
  • 问题内容: 我越来越: java.io.IOException:标头签名无效;读取0x000201060000FFFE,应为0xE11AB1A1E011CFD0 尝试使用apache POI HPSF向Excel文档中添加一些自定义属性时。 我完全确定文件是Excel OLE2(不是HTML,XML或Excel不会抱怨的其他东西)。 这是我的代码的相关部分: 尝试使用Word和Power Poin

  • 问题内容: 在尝试使用apache poi读取Excel 2007文件.xlsx文件扩展时出现问题: 此行请给我一个例外 ,什么原因可能导致此错误? 问题答案: 您需要在类路径中包含一个名为“ your_location_of_poi \ poi-xx \ ooxml-lib \” 的jar文件 。 注意:是您正在使用的poi的版本,并且是上述文件夹下该jar文件的版本号

  • 我试图使用Apache POI 3.9将XLS文件转换为java中的CSV文件,但是我遇到了一些问题。当尝试转换我需要的文件时,它显示了以下错误: 我认为我使用的代码是完全正确的(它也适用于其他文件)。我认为问题出在XLS文件上,因为当我试图使用微软Excel打开它时,它也向我显示了一个关于文件类型的警告(它说它是微软Excel 3工作表)。有没有办法使用POI打开这些文件?

  • 问题内容: 使用最新的JSoup 1.7.2版存在一个错误,该错误分析带有 未关闭标签的* 无效 HTML 。 * 例: 生成的文档为: 浏览器将生成如下内容: Jsoup应该用作浏览器或源代码。 有什么解决办法吗?调查API我什么也没找到。 问题答案: 正确的行为是在解析此无效的HTML时充当其他浏览器。感谢您提交此错误。我已解决了阻止采用机构将原始属性保留在新节点中的问题。它将在1.7.3中可

  • 我有一个包含OClass对象的列表。我想创建这个对象的JSON。下面是我的代码: com.fasterxml.jackson.databind.jsonMappingException:未发现用于com.ontotext.trree.owlim_ext.r类的序列化程序,也未发现用于创建BeanSerializer的属性(为了避免异常,禁用serializationconfig.serializa