在某种情况下,我们需要读取的Excel文件没有后缀名,或后缀名是类似.tmp这样的,这样,我们通过后缀名xls和xlsx来判断Excel的版本就不行了。
这种情况下,我们可以直接使用poi提供的方法来创建。
Workbook wb = WorkbookFactory.create(new FileInputStream("d://temp.tmp"));
WorkbookFactory.create方法中会通过Excel的文件头去判断Excel的版本,生成对应的Workbook(HSSFWorkbook或XSSfWorkbook)。
如果你想自己判断,可以将create中的方法拿出来使用:
if (POIFSFileSystem.hasPOIFSHeader(inp)) {
return new HSSFWorkbook(inp);
}
if (POIXMLDocument.hasOOXMLHeader(inp)) {
return new XSSFWorkbook(OPCPackage.open(inp));
}