Подтвердить что ты не робот

Получить количество столбцов определенной строки в данном excel, используя Java

Мне нужно количество столбцов определенной строки в excel. Как это возможно? Я использовал POI API

но я мог бы получить только столбцы с числом до 7.

    try
            {
                fileInputStream = new FileInputStream(file);
                workbook = new HSSFWorkbook(fileInputStream);
                Sheet sheet = workbook.getSheet("0");


                int numberOfCells = 0;
                Iterator rowIterator = sheet.rowIterator();
                /**
                 * Escape the header row *
                 */
                if (rowIterator.hasNext())
                {
                    Row headerRow = (Row) rowIterator.next();
                    //get the number of cells in the header row
                    numberOfCells = headerRow.getPhysicalNumberOfCells();
                }
                System.out.println("number of cells "+numberOfCells);

}

Я хочу, чтобы число столбцов в определенном номере строки указывало 10. Столбцы excel не одинаковы.

4b9b3361

Ответ 1

Есть две вещи, которые вы можете сделать

использовать

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

или

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

Существует отличная разница между ними

  • Вариант 1 дает столбцы, которые фактически заполнены содержимым (если второй столбец из 10 столбцов не заполнен, вы получите 9)
  • Вариант 2 просто дает вам индекс последнего столбца. Следовательно, сделано 'getLastCellNum()'

Ответ 2

/** Count max number of nonempty cells in sheet rows */
private int getColumnsCount(XSSFSheet xssfSheet) {
    int result = 0;
    Iterator<Row> rowIterator = xssfSheet.iterator();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();
        List<Cell> cells = new ArrayList<>();
        Iterator<Cell> cellIterator = row.cellIterator();
        while (cellIterator.hasNext()) {
            cells.add(cellIterator.next());
        }
        for (int i = cells.size(); i >= 0; i--) {
            Cell cell = cells.get(i-1);
            if (cell.toString().trim().isEmpty()) {
                cells.remove(i-1);
            } else {
                result = cells.size() > result ? cells.size() : result;
                break;
            }
        }
    }
    return result;
}