在使用jxl框架操作excel的时候,因为需要校验excel的内容,但是根据行数遍历excel的数据的时候,发现获取的行数并不是真正的数据行数,后来根据相关资料发现,在使用getRows()方法获取行数的时候,会获取到带格式的行数以及输入过数据但又清空的行数,所以需要遍历每一行的每一列的单元格内容是否为空。
/**
* 循环判断--获取excel的真实行数
*/
private static int realRows(Sheet sheet) {
int rows = sheet.getRows();
int columns=sheet.getColumns();
List<Integer> realRows=new ArrayList<Integer>();
for (int i = 0; i < rows; i++) {
boolean isBlankRow=false;
for (int j = 0; j < columns; j++) {
if (!StringUtils.isEmpty(sheet.getCell(j, i).getContents())) {
isBlankRow=false;
break;
} else {
isBlankRow=true;
}
}
if (!isBlankRow) {
//如果行的每一列不为空,把循环到的行添加到集合
realRows.add(i);
}
}
//集合的size就是真实数据的行数,去掉表头,就是需要的真实行数
int row = realRows.size()-1;
return row;
}