오늘 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 에 관련된 컴포넌트를 소개해보면,
- 공식 홈페이지 : 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 사용방법 및 소스코드는 다음에 작성해보겠다!
[출처]
JXLS, POI JAVA에서 Excel 사용하는 구현 방법 및 종류 비교
개발을 하다 보면 종종 운영에서 엑셀 다운로드 기능에 대한 요구가 있는데, 이번에 Java에서 엑셀 다운로드를 구현하는 방법에 대해 알아보겠습니다. Java에서 엑셀 다운로드 기능을 위해 자주
ddoriya.tistory.com
https://secreth.tistory.com/129
[Excel] Spring에서 엑셀을 출력하는 방법
최근 단위 업무 시스템의 개발을 진행하던 도중, Spring(Java)에서 엑셀을 출력하는 방법에 대해 잠시 고민한 적이 있습니다. 지나가는 분들에게 조금이나마 고민을 해결할 수 있도록 소소하게 정
secreth.tistory.com