Получить количество строк, если в листе Excel есть данные в строке - PullRequest
0 голосов
/ 31 марта 2019

У меня есть лист 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 голосов
/ 02 апреля 2019

Я думаю, что существуют разные виды пустых ячеек: один раз без данных и один раз с пустой строкой в ​​качестве данных.Может быть, в каких случаях у вас проблемы?

Попробуйте проверить наличие пустой строки в значении ячейки:

// I think this check will handle blank cells also
if (cell != null && !cell.toString().isEmpty()) {
    j++;
    break;
}
0 голосов
/ 31 марта 2019

Попробуйте это ...

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