解決java poi循環遍歷行getLastRowNum出現不准確的問題


問題:當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;
  }
                

以上的方法,足夠讓你明白。如果你想在你的實際開發中避免該問題,就先了解這個方法,然后再應用到你的實際開發工作中去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM