티스토리 뷰

Spring으로 웹개발을 하면서 엑셀다운로드를 구현하는일이 자주 발생하게되는데 이때 쉽고 간편한 세팅으로 엑셀다운로드를 할 수있는 jxls에 대해 설명하고자 한다.

 

jxls란 개발자가 미리 엑셀템플릿을 만들고 엑셀(디비에서 조회된)데이터를 템플릿에 바인딩후 그 결과를 엑셀로 받게끔 처리해주는 java 라이브러리 이다.

 

필자가 기존에 엑셀다운로드를 구현할때 java에서 Row, Sheet를 직접생성해주고 for문을 사용해서 cell에다 직접 데이터를 셋팅해주었는데 jxls는 이런 작업을 하지않아도 약간의 java코드만 작성해주면 쉽게 엑셀다운로드를 구현할 수 있다.

jxls 의존성 등록

jxls도 poi기반으로 만들어졌기에 jxls 의존성과, poi 의존성을 추가하자

<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-poi</artifactId>
    <version>1.2.0</version>
</dependency>
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-reader</artifactId>
    <version>2.0.5</version>
</dependency>

엑셀템플릿 생성

여기서 눈여겨봐야할건 빨간색 네모테두리 안이다. 해당 셀 영역에는 jxls 라이브러리가 값을 읽어드릴 수 있게끔 설정해줘야한다.

 

jx:area(lastCell="D4")

A1을 기준으로 jxls가 어느위치의 셀까지 데이터를 읽어드릴수 있을지 설정한다.

D4로 설정을 한 후 E4셀에는 데이터가 바인딩되지 않는다.

 

jx:each(items="list" var="list" lastCell="D4")

실제 데이터가 바인딩되어지는 부분이다. 여기서 items값은 엑셀데이터에 대한 key값이 되며

var값은 items에 매핑된 데이터를 한행씩 꺼내어 해당 셀에 그려준다

 

엑셀데이터중 숫자나 날짜데이터가 존재할 경우 해당 셀에 서식에 들어가서 원하는 서식으로 변경도 가능하다.

엑셀다운로드 샘플데이터 준비

JAVA 코드작성

위에서 생성한 엑셀템플릿 파일을 src/main/resources/templates/excel 디렉토리에 넣어두었다. 그리고 여기서 중요한점은
57 Line, 58 Line에 Context객체에 key/value형식으로 데이터를 넣어두었는데 jxls템플릿 문법에 정의된 ${키} 이름과
Context객체의 key이름과 매핑되야하며 jx:each의 items의 key가 57 Line의 key값과 일치해야한다.
이제 다운로드를 해보자.

엑셀다운로드

정상적으로 엑셀다운로드가 되었다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함