티스토리 뷰

반응형

Java Servlet을 활용해서 엑셀파일을 다운로드 하는 예제를 살펴보도록 하겠습니다. 

일반 텍스트 파일인 CSV와 달리 엑셀로 다운로드 하기 위해서는 jxl.Workbook이라는 클래스가 필요합니다. 

필요한 jxl.jar 파일은 다음에서 다운로드 할 수 있습니다. 

jxl.jar


웹 프로젝트 설정


index.jsp 파일 생성

먼저 파일 다운로드를 위한 화면을 만들어 보도록 하겠습니다. 

이 파일은 엑셀로 저장할 데이터를 서블릿으로 넘겨주는 역할을 하게 됩니다. 

이름을 index.jsp로 하고 다음과 같이 구성해 봤습니다. 


먼저 data라는 변수에 엑셀로 저장할 데이터를 넣었습니다. 여기에서는 컴마로 구분된 값을 전달하는 것으로 했습니다. 

(이 부분은 굉장히 자유롭게 구성할 수 있습니다. 

예를 들면 HTML 파일을 가져와서 파싱해서 엑셀로 저장하는 형태도 고려해 볼 수 있겠죠. 

이럴 때 지난번에 설명한 JSoup 과 같은 라이브러리를 활용 할 수 있을 겁니다.)


이어서 HTML Form을 사용해서 서블릿 miniexport로 파일 다운로드를 요청합니다. 


web.xml 설정

서블릿을 등록하기 위해서 web.xml을 수정해야 합니다. 

다음과 같이 간단하게 miniexport를 서블릿으로 등록할 수 있습니다. 


<servlet>과 <servlet-mapping>으로 miniexport를 설정한 것을 볼 수 있습니다. 


라이브러리 복사

마지막으로 위에서 다운로드한 jxl.jar 파일을 web/WEB-INF/lib 폴더로 복사합니다. 

드디어 준비과정이 모두 끝났습니다. 

이제 남은 것은 web.xml에서 설정한 mini.servlet.MiniExportServlet 파일을 작성하면 됩니다.


엑셀 다운로드를 위한 서블릿 구성 


다음과 같은 두 단계를 거쳐서 서블릿을 구성하면 됩니다. 


1. 엑셀파일 생성하기 

먼저 Workbook.createWorkbook()을 이용해서 엑셀 파일을 하나 생성합니다. 

이때, 서버의 특정 폴더에 파일을 생성해야 하는데요. 리눅스 계열이라면 해당 폴더에 접근 권한이 있어야 함을 반드시 유의해 주세요~


이어서 createSheet() 메소드르 통해서 하나의 엑셀 시트를 생성합니다. 

엑셀 하단에 보면 워크시트라고 있죠.. 그 부분에 해당합니다. 


서버로부터 전달받은 데이터를 분석해서 생성된 엑셀파일에 저장합니다. 

addCell() 메소드로 데이터를 특정 위치에 추가할 수 있습니다. 


마지막으로 write() 메소드를 통해 엑셀 파일을 저장합니다. 


2. 엑셀 다운로드 하기 

엑셀 파일은 텍스트가 아니므로 header 를 수정해서 binary로 받을 수 있도록 설정해야 합니다. 

그래서 response 객체의 setContentType이나 setHeader를 활용해서 적절하게 세팅합니다. 

소스를 보시고 그대로 따라하셔도 됩니다.~


그리고 1번에서 생성된 파일을 열고 스트림으로 출력한 다음 마지막에 생성된 임시파일을 삭제합니다. 


다음 소스를 보면 위의 글들이 쉽게 이해가 될 것입니다. 



위 예제를 실행하면 다음과 같습니다. 

"엑셀 파일 다운로드" 버튼을 클릭하면 하단처럼 "mini.xls" 파일이 다운로드 되는 것을 확인할 수 있습니다. 



반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
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
31
글 보관함