通过POI包使用sheet.getLastRowNum()获取Excel行数的时候,由于获取行数时是从0开始,实际的行数需要获取到的行数+1,但是有时候获取到的行数与Excel实际的行数差的很远,例如:实际Excel中只有100行,但是通过sheet.getLastRowNum()获取到的数值却是1000,这是为什么呢?
原因在于Excel中只要操作过单元格就会认为样式发生改变。即使单元格为空,也会被读取行数据。
解决办法:
判断空行
boolean rowEmpty = true; for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) { Cell cell = row.getCell(i); if(cell != null && cell.getCellType() != CellType.BLANK) { rowEmpty = false; } }
if(!rowEmpty){
//TODO
}