解决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; }
以上的方法,足够让你明白。如果你想在你的实际开发中避免该问题,就先了解这个方法,然后再应用到你的实际开发工作中去。
每天学习一点点,你就进步一点点。