programing

Java를 사용하여 지정된 Excel에서 특정 행의 열 수 가져오기

megabox 2023. 5. 29. 10:29
반응형

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 열이 동일하지 않습니다.

당신이 할 수 있는 두 가지가 있습니다.

사용하다

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

또는

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

그들 사이에는 미묘한 차이가 있습니다.

  1. 옵션 1은 실제로 내용으로 채워진 열의 수를 제공합니다(10개의 열 중 두 번째 열이 채워지지 않으면 9개가 됩니다).
  2. 옵션 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;
}

때때로 사용하기row.getLastCellNum()파일에 실제로 채워진 값보다 높은 값을 제공합니다.
아래 방법을 사용하여 실제 값이 포함된 마지막 열 인덱스를 가져왔습니다.

private int getLastFilledCellPosition(Row row) {
        int columnIndex = -1;

        for (int i = row.getLastCellNum() - 1; i >= 0; i--) {
            Cell cell = row.getCell(i);

            if (cell == null || CellType.BLANK.equals(cell.getCellType()) || StringUtils.isBlank(cell.getStringCellValue())) {
                continue;
            } else {
                columnIndex = cell.getColumnIndex();
                break;
            }
        }

        return columnIndex;
    }

언급URL : https://stackoverflow.com/questions/18489817/get-number-of-columns-of-a-particular-row-in-given-excel-using-java

반응형