【发布时间】: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 文件格式在记事本中的外观没有太多经验,但相关文件显示为制表符分隔的纯文本文件,其中每一行都是一个新行。
-
看起来不错。你几乎已经在这里回答了我的问题。你会把这些写在一个简短的答案中吗?破译签名非常酷:)。现在我只需要弄清楚如何读取制表符间隔文件。目前问题已解决。
标签: java excel apache-poi