我试图用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文件有一个奇怪的标题,这意味着能够解决这个问题。有人知道吗?可能有任何工作吗?
答案 0 :(得分:4)
0x74736575716552
的ASCII等价物为"tseuqeR"
("Request"
向后拼写)。您似乎有一个纯文本文件要求POI作为Excel文件打开。
我首先检查Wikipedia's List of file signatures,当我没有找到任何使用ASCII表的地方时(man ascii
如果你在Linux上,online here否则)转换每2个十六进制数字等同于。