通过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();
- }
本文介绍使用Apache POI库读取Excel文件时如何正确获取实际含有数据的行数,避免将仅设置格式但无数据的行误计入有效数据行中。通过遍历从起始行号到结束行号之间的每一行,并检查每行是否为空来实现。

1万+

被折叠的 条评论
为什么被折叠?



