什么样的标题签名是0x7473657571655220?

时间:2017-01-16 15:08:26

标签: java excel apache-poi

我试图用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文件: enter image description here

1 个答案:

答案 0 :(得分:4)

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

我首先检查Wikipedia's List of file signatures,当我没有找到任何使用ASCII表的地方时(man ascii如果你在Linux上,online here否则)转换每2个十六进制数字等同于。