如何获得行计数使用POI库中的Excel文件?(How to get row count in an

2019-09-01 05:12发布

目前我使用的POI库3.9与家伙Excel文件的工作。 我知道的getLastRowNum()函数,该函数返回一个Excel文件中的行数。

唯一的问题是getLastRowNum()返回一个数从0开始计数。

因此,如果一个Excel文件使用第3行, getLastRowNum()返回2.如果一个Excel文件刚刚1行, getLastRowNum()返回0。

当Excel文件是完全空的,会出现问题。 getLastRowNum()仍返回0,所以我不能确定是否Excel文件具有1行的数据,或者如果它是空的。

所以,我怎么能检测如果一个Excel文件为空或不?

Answer 1:

尝试Sheet.getPhysicalNumberOfRows()



Answer 2:

如果你做一个检查

if
(getLastRowNum()<1){
 res="Sheet Cannot be empty";
return
}

这将确保你至少有一个排,除了报头数据。 下面是我的程序工作正常。 Excel文件有三列IE浏览器。 ID,NAME,LASTNAME

XSSFWorkbook workbook = new XSSFWorkbook(inputstream);
        XSSFSheet sheet = workbook.getSheetAt(0);
        Row header = sheet.getRow(0);
        int n = header.getLastCellNum();
        String header1 = header.getCell(0).getStringCellValue();
        String header2 = header.getCell(1).getStringCellValue();
        String header3 = header.getCell(2).getStringCellValue();
        if (header1.equals("ID") && header2.equals("NAME")
                && header3.equals("LASTNAME")) {
            if(sheet.getLastRowNum()<1){
                System.out.println("Sheet empty");
                         return;
            }   
                        iterate over sheet to get cell values
        }else{
                          SOP("invalid format");
                          return;
                          }


Answer 3:

有两件事情可以做

使用

int noOfColumns = sh.getRow(0).getPhysicalNumberOfCells();

要么

int noOfColumns = sh.getRow(0).getLastCellNum();

他们之间的罚款差异

  1. 选项1给出了实际上充满了内容列没有(如果10列的第2列不填充你会得到9)

  2. 选项2只是给你最后一列的索引。 因此,做'getLastCellNum()'



Answer 4:

由于Sheet.getPhysicalNumberOfRows()不计空行和Sheet.getLastRowNum()返回0二者是否有一排或没有行,我使用这两种方法的组合,以精确地计算出的行的总数。

int rowTotal = sheet.getLastRowNum();

if ((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0)) {
    rowTotal++;
}

注意:这将把一个电子表格,一个空行具有没有,但在大多数情况下这可能是好的。



Answer 5:

为了找到最后一个数据行,如果你在Excel中创建表格模板,它充满部分或间排是空的。 逻辑:

int count = 0;
int emptyrow=0;
int irow=0;
while (rowIterator.hasNext()) {
    row = (Row) rowIterator.next();
    if (count != 0 && !checkIfRowIsEmpty(row)) { }
    else{
        if(count!=0 && emptyrow==irow){
            emptyrow++;
        }else{
            emptyrow=0;
            irow=0;
        }
    }
    if(emptyrow>0){
        irow++;
    }
    if(emptyrow>3){
        break;
    }
    count++;
}


文章来源: How to get row count in an Excel file using POI library?