在某種情況下,我們需要讀取的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));
}