通过getPhysicalNumberOfRows()获得的实际行数,不一定有数据的行数。
比如某个单元格只设置了非“常规”的格式,它也会被POI认为是实际行。
不过POI里似乎没有没有这样的方法,getNextPhysicalRow()。
所以只好从getFirstRowNum()到getLastRowNum()遍历,如果null==currentRow,验证下一行。
try {
Workbook hwb = new HSSFWorkbook(
new FileInputStream("C:\\1.xls"));
Sheet sheet = hwb.getSheetAt(0);
//int rowCount = sheet.getPhysicalNumberOfRows();
int begin = sheet.getFirstRowNum();
int end = sheet.getLastRowNum();
for (int i = begin; i <= end; i++) {
if (null == sheet.getRow(i)) {
continue;
}
// do something
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}