解决java poi循环遍历行getLastRowNum出现不准确的问题

Posted 张亮java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决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;
  }
                

以上的方法,足够让你明白。如果你想在你的实际开发中避免该问题,就先了解这个方法,然后再应用到你的实际开发工作中去。

以上是关于解决java poi循环遍历行getLastRowNum出现不准确的问题的主要内容,如果未能解决你的问题,请参考以下文章

java如何实现用POI输出Excel的时候,设置背景n行有色,n行无色,按顺序循环下去,怎么搞呢?

循环类成员并写入 Excel Apache POI

GAS错误:TypeError:无法读取null的属性“ getLastRow”(第4行,文件“ Code2”)

easypoi导出word表格怎么遍历数据

java用poi往excel里写数据遇到换行问题

JAVA poi 数据库表里的内容输出到Excel表格指定位置