【问题标题】:What kind of header signature is 0x7473657571655220?什么样的头签名是0x7473657571655220?
【发布时间】:2017-01-16 15:08:26
【问题描述】:

我正在尝试使用 apache POI 读取 excel 文件。但是,在运行时我得到一个 NotOLE2FileException。 I've found this question,类似,但这里的错误显然是根本没有文件。我实际上有一个文件,并且有一个签名,但我不知道那是什么类型的签名,或者我如何读取文件。谷歌没有结果。

我的代码:

File file = new File("mypath/myfile.xls");
if(!file.exists()){
    throw new IllegalArgumentException("File does not exist");
}   
try {
    Workbook wb = WorkbookFactory.create(file); //<--- throws exception

//etc...

错误:

org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature; read 0x7473657571655220, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document
    at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:181)
    at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:140)
    at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:232)
    at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:168)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:250)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:222)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:201)
    at providers.ExcelFileReader.getRequestsFromExcelFile(ExcelFileReader.java:25)
    at Test.main(Test.java:13)

我只需要了解为什么我的 xls 文件有一个奇怪的标题,以及这意味着什么,才能解决这个问题。有人知道吗?可能有什么变通办法吗?

更新:据我所知,这是一个完全有效的 excel 文件:

【问题讨论】:

  • 哇。该文件确实是来自我从中提取数据的系统的请求列表。我就是这么做的。我对 excel 文件格式在记事本中的外观没有太多经验,但相关文件显示为制表符分隔的纯文本文件,其中每一行都是一个新行。
  • 看起来不错。你几乎已经在这里回答了我的问题。你会把这些写在一个简短的答案中吗?破译签名非常酷:)。现在我只需要弄清楚如何读取制表符间隔文件。目前问题已解决。

标签: java excel apache-poi


【解决方案1】:

0x74736575716552 的 ASCII 等价物是 "tseuqeR""Request" 拼写向后)。您似乎有一个纯文本文件,您要求 POI 作为 Excel 文件打开。

我首先检查了Wikipedia's List of file signatures,当我没有找到任何东西时,我使用 ASCII 表(man ascii,如果你在 Linux,online here,否则)将每 2 个十六进制数字转换为等效字符。

【讨论】:

  • 很好的答案。该文件似乎是制表符分隔的纯文本文件,而不是 Excel 文件。它是从名为Request 的数据库表中提取的数据。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多