今天在公司需要做個匯入Excel檔案的功能,所以研究了一下,參考網上的一些資料總算是做出來了,在此記錄一下防止以後忘記怎麼弄。
本人用的是poi3.8,所以需要的JAR包如下:
poi-3.8.jar
poi-excelant-3.8-20120326.jar
poi-ooxml-3.8-20120326.jar
poi-ooxml-schemas-3.8-20120326.jar
poi-scratchpad-3.8-20120326.jar
xmlbeans-2.3.0.jar
附上百度雲盤的共享地址,JAR包來自apache官方:http://pan.baidu.com/s/1bnzzheR
附上方法詳情,方法來自csdn的一個部落格,具體地址我給忘了,反正不是原創,不過在其基礎上修改了下,程式碼更易讀,為了讓第一次做這個的人弄明白,所以註釋部分寫的詳細了一些,實際用的時候可以刪掉,此方法可以相容xls和xlsx兩種格式,其他的未經過測試:
public String importExcel() {
try{
InputStream inputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test.xls");
//根據輸入流獲取工作簿(整個excel檔案)
Workbook workbook = WorkbookFactory.create(inputStream);
//獲取第一個工作表(excel檔案中第一個工作表)
Sheet sheet = workbook.getSheetAt(0);
//獲取行迭代器
Iterator<Row> rowIterator = sheet.rowIterator();
while(rowIterator.hasNext()){
//獲取當前行
Row row = (Row) rowIterator.next();
//獲取單元格迭代器
Iterator<Cell> colIterator = row.cellIterator();
while (colIterator.hasNext()){
//獲取當前單元格
Cell cell = (Cell) colIterator.next();
//列印列號和行號,從0開始,Excel中A1單元格列印出來是0:0,B2單元格列印出來是1:1
System.out.print(cell.getRowIndex() + ":" + cell.getColumnIndex() + " ");
//根據單元格的資料型別獲取資料
switch (cell.getCellType()){
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getRichStringCellValue().getString());
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)){
System.out.println(cell.getDateCellValue());
}else{
System.out.println(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
System.out.println(cell.getCellFormula());
break;
default:
System.out.println("null");
}
}
}
} catch (Exception e){
e.printStackTrace();
}
return "";
}