[java] Apache POI를 사용하여 Excel 파일의 데이터 필터링하기

Apache POI는 Java에서 Excel 파일을 다루기 위한 라이브러리입니다. 이 라이브러리를 사용하면 Java 코드를 통해 Excel 파일을 생성, 읽기, 쓰기 등 다양한 작업을 수행할 수 있습니다. 이번 예제에서는 Apache POI를 사용하여 Excel 파일의 데이터를 필터링하는 방법에 대해 알아보겠습니다.

필요한 도구

Apache POI 라이브러리 추가

먼저, 프로젝트에 Apache POI 라이브러리를 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다.

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

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가합니다.

dependencies {
    implementation 'org.apache.poi:poi:4.1.2'
}

Excel 파일 필터링하기

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

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelFilter {

    public static void main(String[] args) {
        String inputFile = "input.xlsx";
        String outputFile = "output.xlsx";

        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(inputFile));
             FileOutputStream outputStream = new FileOutputStream(outputFile)) {

            Sheet sheet = workbook.getSheetAt(0);

            // 필터링할 열 번호 (예: 첫 번째 열은 0)
            int filterColumnIndex = 0;

            // 필터링할 값
            String filterValue = "Apple";

            AutoFilter filter = sheet.setAutoFilter(CellRangeAddress.valueOf("A1:A" + sheet.getLastRowNum()));
            filter.setFilterOnColumn(filterColumnIndex, filterValue);

            workbook.write(outputStream);
            System.out.println("Excel 파일 필터링 완료!");

        } catch (IOException e) {
            System.out.println("Excel 파일을 읽거나 쓰는 동안 오류가 발생했습니다.");
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 Apache POI를 사용하여 Excel 파일을 읽고 필터링된 결과를 새로운 Excel 파일에 저장합니다. inputFile 변수에는 필터링할 원본 Excel 파일의 경로를, outputFile 변수에는 필터링된 결과를 저장할 Excel 파일의 경로를 지정합니다.

filterColumnIndex 변수는 필터링할 열의 번호를 지정하며, 0부터 시작합니다. filterValue 변수는 필터링할 값입니다. 예제에서는 첫 번째 열을 “Apple”로 필터링하도록 설정하였습니다.

setAutoFilter() 메서드를 사용하여 필터 범위를 설정하고, setFilterOnColumn() 메서드를 사용하여 필터를 적용합니다. 마지막으로, workbook.write() 메서드를 호출하여 필터링된 결과를 저장합니다.

이제 코드를 실행하면 필터링된 결과가 outputFile에 저장됩니다.

마무리

Apache POI를 사용하여 Excel 파일의 데이터를 필터링하는 방법에 대해 알아보았습니다. 이를 통해 Java 코드로 Excel 파일을 처리하는 다양한 작업을 수행할 수 있습니다. 참고문서에서 더 자세한 정보를 확인할 수 있으니, 다양한 기능을 활용해보시기 바랍니다.

참고문서