POI导入excel时读取excel数据的真实行数

有很多时候会出现空的数据导致行数被识别多的情况

// 获取Excel表的真实行数
    int getExcelRealRow(Sheet sheet) {
        boolean flag = false;
        for (int i = 1; i <= sheet.getLastRowNum(); ) {
            Row r = sheet.getRow(i);
            if (r == null) {
                // 如果是空行(即没有任何数据、格式),直接把它以下的数据往上移动
                sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
                continue;
            }
            flag = false;
            for (Cell c : r) {
                if (c.getCellType() != Cell.CELL_TYPE_BLANK) {
                    flag = true;
                    break;
                }
            }
            if (flag) {
                i++;
                continue;
            } else {
                // 如果是空白行(即可能没有数据,但是有一定格式)
                if (i == sheet.getLastRowNum())// 如果到了最后一行,直接将那一行remove掉
                    sheet.removeRow(r);
                else//如果还没到最后一行,则数据往上移一行
                    sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
            }
        }
        return sheet.getLastRowNum();
    }

 

posted @ 2019-03-08 13:52  今夜有点儿凉  Views(6252)  Comments(0Edit  收藏  举报