[java] Java Apache POI를 사용하여 Excel 파일의 데이터 정렬하기

Apache POI는 Java에서 Excel 파일을 다루는 데 사용되는 유용한 라이브러리입니다. 이 라이브러리를 사용하면 Java로 Excel 파일의 데이터를 읽고 쓸 수 있습니다. 이번에는 Apache POI를 사용하여 Excel 파일의 데이터를 정렬하는 방법을 알아보겠습니다.

필요한 의존성 추가하기

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

<dependencies>
    <!-- Apache POI 라이브러리 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.0.0</version>
    </dependency>
</dependencies>

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

dependencies {
    // Apache POI 라이브러리
    implementation 'org.apache.poi:poi:5.0.0'
}

Excel 파일에서 데이터 정렬하기

다음으로, Apache POI를 사용하여 Excel 파일에서 데이터를 읽고 정렬하는 방법을 알아보겠습니다. 아래의 코드 예제는 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 ExcelDataSorter {
    public static void main(String[] args) {
        String filePath = "path/to/excel_file.xlsx";

        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = new XSSFWorkbook(fis)) {

            // 첫 번째 시트 선택
            Sheet sheet = workbook.getSheetAt(0);

            // 첫 번째 컬럼을 기준으로 오름차순 정렬
            sheet.setColumnComparator(0, new CellComparator());

            // 정렬된 데이터를 시트에 쓰기
            FileOutputStream fos = new FileOutputStream(filePath);
            workbook.write(fos);
            fos.close();

            System.out.println("Excel 파일의 데이터가 정렬되었습니다.");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class CellComparator implements Comparator<Cell> {
    @Override
    public int compare(Cell cell1, Cell cell2) {
        // 숫자인 경우 값을 비교하여 정렬
        if (cell1.getCellType() == CellType.NUMERIC && cell2.getCellType() == CellType.NUMERIC) {
            Double value1 = cell1.getNumericCellValue();
            Double value2 = cell2.getNumericCellValue();
            return value1.compareTo(value2);
        }

        // 숫자가 아닌 경우 문자열로 값을 비교하여 정렬
        String value1 = cell1.getStringCellValue();
        String value2 = cell2.getStringCellValue();
        return value1.compareTo(value2);
    }
}

위의 코드를 실행하면, 지정한 Excel 파일에서 첫 번째 컬럼을 기준으로 데이터가 오름차순으로 정렬됩니다.

결론

이번 포스트에서는 Java Apache POI를 사용하여 Excel 파일의 데이터를 정렬하는 방법을 알아보았습니다. Apache POI를 사용하면 Java로 Excel 파일의 데이터를 손쉽게 다룰 수 있으며, 이를 활용하여 데이터 정렬과 같은 작업을 수행할 수 있습니다.

더 자세한 내용은 Apache POI 공식 문서를 참조하시기 바랍니다.