[java] Java Apache POI를 사용하여 Excel 파일의 데이터 유효성 검사 오류 스타일 설정하기

Apache POI는 자바에서 Microsoft Office 파일을 조작하는 데 사용되는 라이브러리입니다. 이번 포스트에서는 Apache POI를 사용하여 Excel 파일의 데이터 유효성 검사 오류 스타일을 설정하는 방법에 대해 알아보겠습니다.

1. Apache POI 의존성 추가하기

먼저, 프로젝트의 의존성에 Apache POI를 추가해야 합니다. 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'

의존성을 추가한 후, 프로젝트를 빌드하고 Apache POI를 사용할 준비를 마칩니다.

2. Excel 파일 열기

먼저, Apache POI를 사용하여 Excel 파일을 엽니다. 다음 코드를 사용하면 됩니다:

try {
    FileInputStream file = new FileInputStream(new File("파일경로.xlsx"));
    Workbook workbook = new XSSFWorkbook(file);
    Sheet sheet = workbook.getSheetAt(0);
    
    // 코드 작성
} catch (Exception e) {
    e.printStackTrace();
}

위 코드에서 “파일경로.xlsx”를 실제 파일 경로로 대체해야 합니다. 위 코드는 XLSX 파일을 열기 위한 예제입니다. XLS 파일을 열려면 XSSFWorkbook 대신 HSSFWorkbook을 사용하면 됩니다.

3. 데이터 유효성 검사 오류 스타일 설정하기

Apache POI를 사용하여 데이터 유효성 검사 오류 스타일을 설정하려면 다음 단계를 수행합니다:

3.1. 유효성 검사 규칙 가져오기

Excel 파일에 있는 특정 셀 범위의 데이터 유효성 검사 규칙을 가져옵니다. 다음 코드를 사용하면 됩니다:

DataValidationHelper validationHelper = sheet.getDataValidationHelper();
CellRangeAddressList range = new CellRangeAddressList(startRow, endRow, startCol, endCol);
DataValidationConstraint constraint = validationHelper.createFormulaListConstraint("유효성검사규칙");
DataValidation validation = validationHelper.createValidation(constraint, range);

위 코드에서 startRow, endRow, startCol, endCol은 유효성 검사를 적용할 셀 범위의 시작 행, 종료 행, 시작 열, 종료 열을 나타냅니다. “유효성검사규칙”은 유효성 검사에 사용될 Excel의 셀 범위나 데이터 목록을 나타내는 양식입니다.

3.2. 오류 스타일 설정하기

데이터 유효성 검사에 오류가 발생할 경우 셀에 적용할 스타일을 설정합니다. 다음 코드를 사용하면 됩니다:

CellStyle errorStyle = workbook.createCellStyle();
errorStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
errorStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
validation.setShowErrorBox(true);
validation.setEmptyCellAllowed(false);
validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
validation.setErrorTitle("오류");
validation.setErrorView(errorStyle);

sheet.addValidationData(validation);

위 코드에서는 오류가 발생했을 때 셀 배경색을 빨간색으로 설정하도록 하였습니다. 필요에 따라 스타일을 변경할 수 있습니다.

4. Excel 파일 저장하기

모든 작업이 완료되면 변경한 내용을 Excel 파일에 저장해야 합니다. 다음 코드를 사용하면 됩니다:

FileOutputStream fileOut = new FileOutputStream(new File("파일경로.xlsx"));
workbook.write(fileOut);
fileOut.close();
workbook.close();

위 코드에서 “파일경로.xlsx”를 실제 파일 경로로 대체해야 합니다.

완성된 코드 예제

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;

public class Main {
    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("파일경로.xlsx"));
            Workbook workbook = new XSSFWorkbook(file);
            Sheet sheet = workbook.getSheetAt(0);
            
            DataValidationHelper validationHelper = sheet.getDataValidationHelper();
            CellRangeAddressList range = new CellRangeAddressList(1, 10, 0, 0);
            DataValidationConstraint constraint = validationHelper.createFormulaListConstraint("유효성검사규칙");
            DataValidation validation = validationHelper.createValidation(constraint, range);
            
            CellStyle errorStyle = workbook.createCellStyle();
            errorStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
            errorStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            validation.setShowErrorBox(true);
            validation.setEmptyCellAllowed(false);
            validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
            validation.setErrorTitle("오류");
            validation.setErrorView(errorStyle);

            sheet.addValidationData(validation);
            
            FileOutputStream fileOut = new FileOutputStream(new File("파일경로.xlsx"));
            workbook.write(fileOut);
            fileOut.close();
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 예제는 “파일경로.xlsx” 파일의 1번째 행부터 10번째 행까지 첫 번째 열에 유효성 검사를 적용한 후, 오류 발생 시 해당 셀을 빨간색으로 표시합니다.

이제 코드를 실행하면 Excel 파일에 데이터 유효성 검사 오류 스타일이 설정된 것을 확인할 수 있습니다.

결론

Apache POI를 사용하여 Excel 파일의 데이터 유효성 검사 오류 스타일을 설정하는 방법에 대해 알아보았습니다. 이를 통해 Excel 파일에 유효성 검사를 추가하고, 오류 발생 시 사용자에게 시각적인 피드백을 제공할 수 있습니다.

더 많은 기능과 사용법은 Apache POI 공식 문서를 참조하시기 바랍니다.