POI 解析excel時sheet的實際行數,數字問題
Apache 的POI 解析excel時如何獲得實際行數
String filePath="C://test.xls";
HSSFWorkbook workbook = null;
try {
workbook = new HSSFWorkbook(new POIFSFileSystem(
new FileInputStream(filePath)));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
HSSFSheet sheetLi=workbook.getSheet("Li");
System.out.println(sheetLi.getLastRowNum());結果一
System.out.println(sheetLi.getFirstRowNum());結果二
System.out.println(sheetLi.getPhysicalNumberOfRows());結果三
1 結果三總是比結果一大一
行數的索引從0開始,結果二顯示的是excel左側顯示的實際數字
2 這裡的行數並不是實際有資料的行數
當你新建一個sheet還沒有新增任何內容時獲得的sheetLi為null
同樣row 和cell也是null
但是當插入資料後又把內容清除掉時列印的結果並不發生變化,row 和cell仍然是物件就不再是null了
然後當你把實際存在過資料的行全部刪掉時,就一切恢復原樣和最初新建的效果都是null
所以要是判斷實際有資料的行數就要自己來做了
3 單元格的型別
在excel裡設定的單元格格式只代表excel裡的樣式
POI自己的cellType
HSSFCell.CELL_TYPE_NUMERIC 單元格格式是數值可以得到數字和日期的值,如果你設定的小數位為2,比如輸入為1,那麼excel顯示是1.00,但是實際getNumericCellValue()得到的是1.0
HSSFCell.CELL_TYPE_STRING 單元格格式是文字 只能用getStringCellValue()
單元格格式是常規,填文字就是文字,只能得到文字那麼填數字的話 可以得到數字和日期的值,字元也不行;特別注意比如填的是1,那麼得到的數字是1.0
想要得到其他型別就要自己做轉換