Java之excel匯入資料同時相容.xls和.xlsx
阿新 • • 發佈:2019-01-02
前幾天寫了一個java中用poi操作excel匯入資料的小例子,後來發現並不能相容兩種版本的excel,經過改進發現了兩種方法都可以。
第一種,這種直接用了Workbook的工廠方法。
// 建立對Excel工作簿檔案的引用
//直接用HSSFWorkbook和XSSFWorkbook所實現的介面Workbook
Workbook wookbook = null;
wookbook = WorkbookFactory.create(inputStream);
// 在Excel文件中,第一張工作表的預設索引是0
Sheet sheet = wookbook.getSheetAt(0);
//.......下面的邏輯詳見我寫的上一篇
第二種,這種通過判斷你上次的excel的型別,來分別使用相對應的方法來處理。感覺這種方法更好點。
//直接用HSSFWorkbook和XSSFWorkbook所實現的介面Workbook
Workbook wookbook = null;
//呼叫下面的方法
wookbook = createExcel(inputStream);
Sheet sheet = wookbook.getSheetAt(0);
---------------------------------------------------
//新建個方法, 返回HSSFWorkbook和XSSFWorkbook所實現的介面
public Workbook createExcel(InputStream inp) throws IOException,InvalidFormatException {
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("你的excel版本目前poi解析不了");
}
我說下需要引入的jar包:poi-ooxml-3.8.jar,poi-ooxml-schemas-3.8.jar,poi-3.8.jar