[java] Apache POI를 사용하여 Excel 파일의 데이터 유효성 검사 오류 경고 읽기

Apache POI는 Java에서 Excel 파일을 다루는 데 사용되는 라이브러리입니다. 이 라이브러리를 사용하여 Excel 파일의 데이터 유효성 검사 오류 경고를 읽어올 수 있습니다.

의존성 추가

먼저, Maven을 사용한다면 pom.xml 파일에 다음 의존성을 추가해야 합니다.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

Gradle을 사용한다면 build.gradle 파일에 다음 의존성을 추가합니다.

implementation 'org.apache.poi:poi:4.1.2'

Excel 파일 열기

Apache POI를 사용하여 Excel 파일을 열려면 Workbook 객체를 생성해야 합니다. 다음은 파일을 읽어와서 Workbook 객체를 생성하는 예제입니다.

import org.apache.poi.ss.usermodel.*;

try (Workbook workbook = WorkbookFactory.create(new File("경로/파일명.xlsx"))) {
    // Workbook 객체 사용
} catch (IOException e) {
    e.printStackTrace();
}

위 예제에서 “경로/파일명.xlsx” 부분을 실제 파일 경로와 파일명으로 바꿔야 합니다.

유효성 검사 오류 경고 읽기

Excel 파일에서 유효성 검사 오류 경고를 읽기 위해선 Sheet 객체를 사용해야 합니다. 다음은 첫 번째 시트에서 모든 유효성 검사 오류 경고를 읽어오는 예제입니다.

Sheet sheet = workbook.getSheetAt(0);

DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationEvaluator dvEvaluator = dvHelper.createEvaluator(sheet);

int rowNum = sheet.getFirstRowNum() + 1; // 첫 번째 행은 헤더이므로 제외

while (rowNum <= sheet.getLastRowNum()) {
    Row row = sheet.getRow(rowNum);

    for (Cell cell : row) {
        CellStyle cellStyle = cell.getCellStyle();
        DataValidation dataValidation = dvEvaluator.getDataValidationForCell(cell);

        if (dataValidation != null) {
            if (dataValidation.getValidationType() == DataValidationConstraint.ValidationType.FORMULA) {
                String formula = dataValidation.getFormula1();
                System.out.println("Invalid Formula: " + formula);
            } else {
                System.out.println("Invalid Data: " + cell.toString());
            }
        }
    }

    rowNum++;
}

위 예제에서는 DataValidationHelperDataValidationEvaluator를 사용하여 Sheet에서 유효성 검사 오류 경고를 확인합니다. 만약 유효성 검사 유형이 “FORMULA”인 경우에는 해당 셀의 공식을 출력하고, 그 외에는 셀의 값을 출력합니다.

참고 자료