如果Excel工作表中有一行数据,则获取行数

时间:2019-03-31 09:10:44

标签: java apache-poi

我有一个Excel工作表,其中有14行。 2行为空。在14行中,有12行包含数据。数据可能存在于每一行的任何列中。因此,我想迭代每一行的单元格,如果任何单元格中都存在数据,那么我需要增加j变量。

我的要求是,如果有14行并且其中12行有数据,则j变量应打印12。

package com.optum.synergy.nav4Me.ui.stepDefinitions;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellAddress;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;

public class ExcelSheetTest {
    public static final String SAMPLE_XLSX_FILE_PATH = "C:/Users/abc/Documents/excel_test.xlsx";

    public static void main(String[] args) {
        System.out.println("okkk");
        // Creating a Workbook from an Excel file (.xls or .xlsx)
        Workbook workbook;
        try {
            workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));
            System.out.println("Workbook has " + workbook.getNumberOfSheets() + " Sheets  ");
            Sheet sh = workbook.getSheetAt(0);

            int num1 = sh.getPhysicalNumberOfRows();
            System.out.println(" " + num1);
            int j = 0;
            for (int i = 0; i < num1; i++) {

                Row eachrow = sh.getRow(i);
                for (Cell cell : eachrow) {
                    System.out.println("...... "+cell);
                    if(cell !=null){
                        j++ ;
                        break ;
                    }
                }
            }
            System.out.println("Row counts :"+j);

        } catch (EncryptedDocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // Retrieving the number of sheets in the Workbook

    }

}

当前“行数:”打印:14

我应该如何修复代码以满足我的要求?

2 个答案:

答案 0 :(得分:0)

尝试一下...

if(cell !=null && cell.getCellType() != Cell.CELL_TYPE_BLANK)
{
j++ ;
break ;
}

答案 1 :(得分:0)

我认为有不同类型的空单元格:一次没有数据,一次有空字符串作为数据。也许那是您遇到什么问题?

尝试检查单元格值中的空字符串:

// I think this check will handle blank cells also
if (cell != null && !cell.toString().isEmpty()) {
    j++;
    break;
}