問題:當Excel中原有10條,數據,刪除5行後,sheet.getLastRowNum()的到值仍是10這個bug如何解決??post
更或者原本excel數據爲空,但是讀取的sheet.getLastRowNum()倒是有數字,並且還比較大....spa
這種狀況會致使作了一些沒必要要的循環,並且還容易報錯,因此爲了解決此問題,我查找了各類資料,最後用一個簡單的方法能夠避免該問題excel
一、CellType以下類型:code
CellType |
Value |
CELL_TYPE_NUMERIC |
0 |
CELL_TYPE_STRING |
1 |
CELL_TYPE_FORMULA |
2 |
CELL_TYPE_BLANK |
3 |
CELL_TYPE_BOOLEAN |
4 |
CELL_TYPE_ERROR |
5 |
二、在讀取Cell內容時,遇到當CellType == CELL_BLANK_TYPE時
a、按照cell.getNumericCellValue()讀取,會讀取到0.0。blog
b、按照cell.getStringCellValue()讀取,會讀取到empty的String。開發
下面我就先展現一下代碼get
public static boolean isRowEmpty(Row row){ System.out.println("讀取excle有數據的列數爲"+row.getLastCellNum()); for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) { Cell cell = row.getCell(i); if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK){ System.out.println("循環第幾回:"+(i+1)); return false; }else { System.out.println("實際的excle有數據的列數爲"+(i+1)); break; } } return true; }
以上的方法,足夠讓你明白。若是你想在你的實際開發中避免該問題,就先了解這個方法,而後再應用到你的實際開發工做中去。table