본문 바로가기
웹개발/java

자바 Excel 라이브러리 POI

by 지구별 여행자 임탱 2024. 4. 8.
728x90

자바에서 Apache POI 라이브러리를 사용하여 엑셀 파일(.xls, .xlsx)의 데이터를 읽을수 있습니다.

Apache POI는 마이크로소프트 오피스 파일 포맷을 자바 언어로 다룰 수 있게 해주는 오픈 소스 라이브러리입니다.

 

POI 라이브러리 설치

  * Maven 설정 : pom.xml에 POI 의존성 추가

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

 

엑셀 파일 읽기

 엑셀 파일을 읽기 위해서는 FileInputStream을 사용하여 파일을 불러온 후, POI 라이브러리의 Workbook, Sheet, Row, Cell 객체를 활용하여 데이터를 읽습니다.

FileInputStream file = new FileInputStream(new File("example.xlsx"));
Workbook workbook = new XSSFWorkbook(file);
Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();

while (rowIterator.hasNext()) {
    Row row = rowIterator.next();
    // 각 행의 모든 셀 처리
    Iterator<Cell> cellIterator = row.cellIterator();
    
    while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        // 셀 데이터 처리
    }
}
file.close();

 

엑셀 파일 처리 성능 문제
 1. 문제: 대량의 데이터를 처리할 때 POI 라이브러리의 성능 문제가 발생할 수 있습니다. 특히, 많은 이미지를 포함한 엑셀 파일을 처리할 때 속도가 현저히 느려질 수 있습니다. 
 2. 해결책: SXSSF 방식을 사용하여 메모리 사용량을 줄이고 성능을 개선할 수 있습니다. SXSSF는 XSSF의 스트리밍 버전으로, 대용량 데이터를 처리할 때 유용합니다.

 

엑셀 파일 생성 및 추출의 복잡성
 1. 문제: POI 라이브러리를 사용하여 엑셀 파일을 생성하거나 추출하는 과정이 복잡하고, 코드가 길어질 수 있습니다. 
 2. 해결책: 엑셀 파일 처리를 위한 공통 모듈을 개발하여 재사용할 수 있습니다. 또한, POI 라이브러리의 고급 기능을 활용하여 코드를 간결하게 만들 수 있습니다.