java中讀取excel文件時對不同的版本提供了不同的讀取方法,這就要求我們在讀取excel文件時獲取excel文件的版本信息從而通過不同的版本去使用不同的讀取方式,
在WorkbookFactory.create()函數中,做過對文件類型的判斷,所以我們如果想通過修改文件后綴去創建對應的Workbook對象是行不通的,我們看一下源碼是如何判
判斷笨笨類型從而創建對應的對象的:
public static Workbook create(InputStream inp) throws IOException, InvalidFormatException {
// If clearly doesn't do mark/reset, wrap up
if(! inp.markSupported()) {
inp = new PushbackInputStream(inp, 8);
}
if(POIFSFileSystem.hasPOIFSHeader(inp)) {
return new HSSFWorkbook(inp);
}
if(POIXMLDocument.hasOOXMLHeader(inp)) {
return new XSSFWorkbook(OPCPackage.open(inp));
}
throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream");
}
由此我們便可以通過判斷不同的文件版本去使用對應的對象讀取excel中的信息了
