美文网首页
java poi 中sheet.getLastRowNum();

java poi 中sheet.getLastRowNum();

作者: CoderInsight | 来源:发表于2023-05-26 18:47 被阅读0次

直接上解决方案

本次解决的poi的版本为3.8,如果实际操作中对象不存在或过期可以增加版本的考虑因素。在方法中,遍历每一行和单元格,判断是否为空白行。如果是空白行,则直接调用 Sheet 的 removeRow() 方法删除该行。最后,将真实行数作为方法的返回值返回即可。

 /**
     * 获取准确的文件行数,并返回Sheet对象
     * @param workbook Excel文件
     * @return Sheet对象
     */
    public Sheet countRealRowsAndRemoveBlankRows(Workbook workbook) {
        //默认Excel第一页为数据
        Sheet sheet = workbook.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 0; i <= lastRowNum; i++) {
            Row row = sheet.getRow(i);
            if (row != null) {
                boolean allBlank = true;
                for (int j = 0; j < row.getLastCellNum(); j++) {
                    Cell cell = row.getCell(j);
                    if (cell == null || cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
                        cell = row.createCell(j, HSSFCell.CELL_TYPE_BLANK);
                    }
                    if (cell.getCellType() != HSSFCell.CELL_TYPE_BLANK) {
                        allBlank = false;
                        break;
                    }
                }
                if (allBlank) {
                    sheet.removeRow(row);
                }
            }
        }
        return sheet;
    }

补充新版本的参考解决方案

int lastRowNum = sheet.getLastRowNum();
int physicalNumOfRows = sheet.getPhysicalNumberOfRows();
int realNumOfRows = 0;

for (int i = 0; i <= lastRowNum; i++) {
    Row row = sheet.getRow(i);
    if (row != null) {
        boolean allBlank = true;
        for (int j = 0; j < row.getLastCellNum(); j++) {
            Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
            if (cell.getCellType() != CellType.BLANK) {
                allBlank = false;
                break;
            }
        }
        if (!allBlank) {
            realNumOfRows++;
        }
    }
}

System.out.println("lastRowNum: " + lastRowNum); // 599
System.out.println("physicalNumOfRows: " + physicalNumOfRows); // 600
System.out.println("realNumOfRows: " + realNumOfRows); // 5

相关文章

网友评论

      本文标题:java poi 中sheet.getLastRowNum();

      本文链接:https://www.haomeiwen.com/subject/wjakedtx.html