我正在尝试用apache读取excel文件。但是,在运行时,我会得到一个NotOLE2FileException。我发现了这个问题,这是类似的,但是这里的错误很明显,根本没有文件。我实际上有一个文件,也有一个签名,但我不知道是什么样的签名,也不知道如何读取该文件。谷歌没有结果。
我的守则:
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文件:
发布于 2017-01-16 15:21:19
与0x74736575716552
等价的ASCII是"tseuqeR"
("Request"
向后拼写)。似乎您有一个纯文本文件,您要求POI作为Excel文件打开它。
我首先检查了维基百科的文件签名列表,当我没有找到任何使用ASCII表(如果您在Linux上的话,在线这里 )来将每两个十六进制数字转换成等效字符的任何东西时。
https://stackoverflow.com/questions/41679391
复制相似问题