[java] Java Apache POI를 사용하여 Excel 파일의 정렬 설정하기
Apache POI는 Java에서 Microsoft Office 파일을 생성, 수정 및 처리하는 데 사용되는 라이브러리입니다. 이번에는 Apache POI를 사용하여 Excel 파일의 정렬을 설정하는 방법에 대해 알아보겠습니다.
1. Maven Dependency 추가하기
프로젝트의 pom.xml 파일에 Apache POI 의존성을 추가해줍니다.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
2. Excel 파일 생성하기
먼저 Apache POI를 사용하여 Excel 파일을 생성합니다. 이 예제에서는 간단한 예시를 위해 Workbook에 하나의 Sheet를 생성하고 몇 가지 데이터를 입력하겠습니다.
// 필요한 라이브러리 import
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelSortExample {
public static void main(String[] args) {
// 새로운 Workbook 생성
Workbook workbook = new XSSFWorkbook();
// 새로운 Sheet 생성
Sheet sheet = workbook.createSheet("ExampleSheet");
// 데이터 작성
Row row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("Name");
row1.createCell(1).setCellValue("Age");
Row row2 = sheet.createRow(1);
row2.createCell(0).setCellValue("John");
row2.createCell(1).setCellValue(25);
Row row3 = sheet.createRow(2);
row3.createCell(0).setCellValue("Jane");
row3.createCell(1).setCellValue(30);
// Excel 파일 저장
try (FileOutputStream fileOut = new FileOutputStream("example.xlsx")) {
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
// Workbook 리소스 해제
workbook.close();
}
}
3. Excel 파일의 정렬 설정하기
이제 Excel 파일의 정렬을 설정해보겠습니다. 예를 들어, Name 열을 기준으로 오름차순으로 정렬하려면 다음과 같이 작성할 수 있습니다.
// 정렬할 열 인덱스
int sortColumnIndex = 0;
// 정렬하기 전에 Sheet에서 DataFormatter를 사용해서 데이터 타입을 텍스트로 변환해주는 것이 좋습니다.
DataFormatter dataFormatter = new DataFormatter();
FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
// 정렬 대상 열을 기준으로 값을 추출한 다음, 정렬합니다.
ArrayList<String[]> sortingData = new ArrayList<>();
for (Row row : sheet) {
Cell sortColumnCell = row.getCell(sortColumnIndex);
String sortColumnValue = dataFormatter.formatCellValue(sortColumnCell, formulaEvaluator);
String[] rowData = new String[] { sortColumnValue, dataFormatter.formatCellValue(row.getCell(1)) };
sortingData.add(rowData);
}
// 정렬
sortingData.sort(Comparator.comparing(o -> o[0]));
// 정렬된 데이터를 다시 Excel 파일에 쓰기
for (int i = 0; i < sortingData.size(); i++) {
Row row = sheet.getRow(i);
if (row == null) {
row = sheet.createRow(i);
}
row.getCell(sortColumnIndex).setCellValue(sortingData.get(i)[0]);
row.getCell(1).setCellValue(sortingData.get(i)[1]);
}
// 정렬된 Excel 파일 저장
try (FileOutputStream fileOut = new FileOutputStream("example_sorted.xlsx")) {
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
}
위 예제에서는 Name 열을 기준으로 오름차순으로 정렬한 후, 정렬된 데이터를 Excel 파일로 저장합니다.
결론
Apache POI를 사용하여 Excel 파일의 정렬을 설정하는 방법에 대해 알아보았습니다. 이를 통해 Java 언어로 Excel 파일을 다룰 때 간편하게 정렬할 수 있습니다. 참고로, Apache POI는 다양한 기능과 메서드를 제공하기 때문에 다른 Excel 작업에도 유용하게 사용할 수 있습니다.