상세 컨텐츠

본문 제목

How to Read Excel in Java (JXSL vs POI)

Java

by 범쥰 2023. 2. 1. 23:34

본문

오늘 Java로 Excel을 Read/Write 하는 기능에 대한 개발건에 앞서, 가볍게 라이브러리 기술검토를 해보았다.

Java에서 Excel을 읽거나 쓰는 라이브러리로는 JXSL 라이브러리 또는 POI 라이브러리를 이용한다고 한다.


JXSL 라이브러리

- 개발자가 미리 엑셀 템플릿을 만들어두고 DB로부터 조회해 온 데이터가 자동으로 바인딩되어 개발하기에는 굉장히 편한 라이브러리이다. 

- 공식 홈페이지는 https://jxls.sourceforge.net/ 

 

JXLS -

Jxls 2.12.0 is released! With change #73 it’s possible to throw exceptions instead of logging them as ERROR: transformer.setExceptionHandler(new PoiExceptionThrower()); // also turn on strict non-silent mode transformer.getTransformationConfig().setExpre

jxls.sourceforge.net

공식 홈페이지에서도 Introduction 시작에서 보다시피, 무겁지 않은 라이브러리로 가벼운 엑셀을 액세스 할 때 간편하다.

Jxls is a small Java library to make generation of Excel reports easy.

POI 라이브러리

- 아파치 소프트웨어 재단에서 만든 라이브러리로 ms office 파일 포맷을 Java 언어로 읽고 쓰는 기능을 제공한다.

- 여러 하위 컴포넌트 중 Excel 에 관련된 컴포넌트를 소개해보면,

  • HSSF : EXCEL 2007 이전 버전(.xls)에서 사용하는 컴포넌트
    - org.apache.poi.hssf 패키지 활용
  • XSSF : EXCEL 2007 버전(.xlsx) 에서 사용하는 컴포넌트
    - org.apache.poi.xssf 패키지 활용
  • SXSSF : XSSF의 Streaming Version으로 메모리를 적게 사용하여 대용량 엑셀 다운로드에 주로 사용되는 컴포넌트

- 공식 홈페이지 :  https://poi.apache.org/

 

Apache POI - the Java API for Microsoft Documents

<!--+ |breadtrail +--> <!--+ |start Menu, mainarea +--> <!--+ |start Menu +--> <!--+ |end Menu +--> <!--+ |start content +--> Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is plea

poi.apache.org


 

JXLS 라이브러리와 POI 라이브러리를 비교하자면,

JXLS POI
개발자가 엑셀 템플릿 파일을 생성해야함 템플릿 파일 없이 직접 파일 생성 가능
데이터를 메모리에 들고있음
-> 1만 Row 이상 시, Out Of Memory 발생
데이터를 파일에 기록 후 메모리에서 Clear 해버림
-> 메모리 소비 적고, 대량 데이터에도 거뜬함
템플릿에 JXLS의 정해진 문법만 사용해야함 cellStyle 관리가 용이해서 원하는 형태로 셀 편집 가능 
가벼운 라이브러리라 속도가 빠름 Workbook,Sheet,Row,Cell,data Set 모두 한줄씩 직접해줘야해서 코드도 길고 속도도 느림
(SXSSF 는 더 빠르다는 글도 있음)
복잡한 템플릿을 사용한다면 용이 엑셀 다운로드가 빈번하게 일어날 경우 용이

 

일단 대량의 데이터를 처리를 못하는 JXLS 의 매우 큰 단점 때문에 복잡한 방식의 POI 라이브러리를 선택했다.

POI 사용방법 및 소스코드는 다음에 작성해보겠다!

 

 

[출처]

https://ddoriya.tistory.com/entry/JXLS-POI-JAVA%EC%97%90%EC%84%9C-Excel-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B5%AC%ED%98%84-%EB%B0%A9%EB%B2%95-%EB%B0%8F-%EC%A2%85%EB%A5%98-%EB%B9%84%EA%B5%90

 

JXLS, POI JAVA에서 Excel 사용하는 구현 방법 및 종류 비교

개발을 하다 보면 종종 운영에서 엑셀 다운로드 기능에 대한 요구가 있는데, 이번에 Java에서 엑셀 다운로드를 구현하는 방법에 대해 알아보겠습니다. Java에서 엑셀 다운로드 기능을 위해 자주

ddoriya.tistory.com

https://secreth.tistory.com/129

 

[Excel] Spring에서 엑셀을 출력하는 방법

최근 단위 업무 시스템의 개발을 진행하던 도중, Spring(Java)에서 엑셀을 출력하는 방법에 대해 잠시 고민한 적이 있습니다. 지나가는 분들에게 조금이나마 고민을 해결할 수 있도록 소소하게 정

secreth.tistory.com