[java] Apache POI를 이용한 Excel 셀 분할

Apache POI는 Java에서 Microsoft Office 파일 형식을 다루기 위한 라이브러리입니다. 이 라이브러리를 사용하여 Excel 파일을 다룰 수 있는데, 이번 포스트에서는 Apache POI를 이용하여 Excel 셀을 분할하는 방법을 알아보겠습니다.

Apache POI 의존성 추가

먼저 Apache POI를 사용하기 위해 프로젝트의 의존성에 다음을 추가해야 합니다.

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

Excel 파일 열기

먼저 Excel 파일을 열어야 셀을 분할할 수 있습니다. 아래의 코드를 사용해서 Excel 파일을 열어봅시다.

// 파일 경로 또는 스트림으로 Excel 파일 열기
Workbook workbook = WorkbookFactory.create(new File("파일경로.xlsx"));

위 코드에서 WorkbookFactory.create() 메소드를 통해 파일을 열고, Workbook 객체를 얻을 수 있습니다.

시트 가져오기

Excel 파일을 열었다면, 이제 시트를 가져와서 작업할 수 있습니다. 아래의 코드를 사용해서 첫 번째 시트를 가져오는 방법을 알아봅시다.

// 첫 번째 시트 가져오기
Sheet sheet = workbook.getSheetAt(0);

위 코드에서 getSheetAt() 메소드의 인자로 가져올 시트의 인덱스를 전달합니다. 인덱스는 0부터 시작하며, 여러 개의 시트가 있는 경우에는 해당 시트의 인덱스를 지정하여 가져올 수 있습니다.

셀 분할

이제 시트를 가져왔으니, 실제로 셀을 분할해보겠습니다. Apache POI에는 CellRangeAddress 클래스를 사용하여 셀 범위를 지정할 수 있습니다. 아래의 코드를 사용하여 셀을 분할하는 방법을 알아봅시다.

// 셀 분할할 범위 정의 (시작 행, 끝 행, 시작 열, 끝 열)
CellRangeAddress range = new CellRangeAddress(0, 4, 0, 2);

// 시트에 셀 분할 적용
sheet.addMergedRegion(range);

위 코드에서 CellRangeAddress 객체를 생성하여 분할할 셀의 범위를 지정합니다. 범위는 시작 행, 끝 행, 시작 열, 끝 열의 순서로 지정하며, 위의 예제에서는 첫 번째 행부터 다섯 번째 행까지, 첫 번째 열부터 세 번째 열까지를 선택하도록 설정되었습니다. 그리고 sheet.addMergedRegion() 메소드를 통해 시트에 셀 분할을 적용합니다.

Excel 파일 저장

셀 분할 작업이 끝났으면, 변경된 내용을 Excel 파일에 저장해야 합니다. 아래의 코드를 사용하여 Excel 파일을 저장하는 방법을 알아봅시다.

// Excel 파일 저장
workbook.write(new FileOutputStream("새파일경로.xlsx"));
workbook.close();

위 코드에서 workbook.write() 메소드를 통해 변경된 내용을 파일에 쓰고, workbook.close() 메소드를 호출하여 메모리를 해제합니다.

실행 결과

앞서 작성한 코드를 실행하면, 셀 분할이 적용된 Excel 파일이 생성됩니다. 해당 파일을 열어보면, 선택한 셀 범위가 하나의 셀로 통합된 것을 확인할 수 있습니다.

결론

Apache POI를 사용하여 Excel 파일을 다루는 것은 매우 간단하고 효율적입니다. Excel 파일의 셀 분할이 필요한 경우, CellRangeAddress 클래스의 도움을 받아 간단히 구현할 수 있습니다. Apache POI의 다양한 기능을 활용하여 Excel 파일을 처리하는 방법을 더 알아보시기 바랍니다.