問題:當Excel中原有10條,數據,刪除5行后,sheet.getLastRowNum()的到值還是10這個bug如何解決??
更或者本來excel數據為空,可是讀取的sheet.getLastRowNum()卻是有數字,而且還比較大....
這種情況會導致做了一些不必要的循環,而且還容易報錯,所以為了解決此問題,我查找了各種資料,最后用一個簡單的方法可以避免該問題
1、CellType如下類型:
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 |
2、在讀取Cell內容時,遇到當CellType == CELL_BLANK_TYPE時
a、按照cell.getNumericCellValue()讀取,會讀取到0.0。
b、按照cell.getStringCellValue()讀取,會讀取到empty的String。
下面我就先展示一下代碼
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; }
以上的方法,足夠讓你明白。如果你想在你的實際開發中避免該問題,就先了解這個方法,然后再應用到你的實際開發工作中去。