1. 程式人生 > >Java之excel匯入資料同時相容.xls和.xlsx

Java之excel匯入資料同時相容.xls和.xlsx

前幾天寫了一個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