티스토리 뷰

# 자바 JXL API 를 이용한 Excel 파일 만들기

---------------------------

1. JXL API 다운 받기

2. JSP에서 사용할 class 만들기

3. JSP에서 적용하기

4. 요구 사항에 맞게 확장하기

----------------------------


1. 환경 설정

JAVA에서 Excel을 만들기 위해서는 JXL API 나 POI를 이용해야 한다.

우선 이번장에서는 JXL을 이용하여 만드는 방법에 대해서 소개하기로 한다.

Java Excel API - A Java API to read, write and modify Excel spreadsheets ( 이하 JXL )은

다음과 같은 홈페이지에서 다운 받을 수 있다


파일 다운 받기 :

http://www.andykhan.com/jexcelapi/download.html


API 정보 :

http://www.andykhan.com/jexcelapi/index.html


우선 사이트에서 가장 최신 버젼의 JExcelApi를 다운 받는다.

압축을 해제한 후에 각 사용자 환경에 맡게 jar 파일을 옮긴다.

( 일반 JAVA User - j2sdk 폴더 밑에 jrelibext 파일로 옮긴다. )


2. JSP에서 사용할 class 만들기


- 파일 다운로드 -


1) Parameter 정보

JSP에서 class로 넘겨주는 정보는 다음과 같다.

Vector data :: Query를 통해 나온 Recordset 집합

String[] column :: column 이름 <- Excel 에서 Head 역할

int[] columntype :: column 타입 <- 문자형, 정수형, 실수형 으로 구분하였다.

String FilePath :: Excel 파일을 저장하기위한 절대 경로

String SheetName :: Sheet 이름


2) Excel File 생성하기

Excel 파일을다음과 같이 생성을 한다


WritableWorkbook workbook = Workbook.createWorkbook(new File(FilePath));

WritableSheet sheet = workbook.createSheet(SheetName, 0);


- FilePath :: Excel 파일을 저장하기위한 절대 경로

- SheetName :: 시트 이름

- 0 :: 시트 인덱스 번호


3) Cell Type 지정하기

a. Text 형

jxl.write.WritableCellFormat format_column = new WritableCellFormat();

jxl.write.WritableCellFormat format_data = new WritableCellFormat();


b. 정수형 ( 1000단위 마다 , 찍기 X )

jxl.write.WritableCellFormat format_integer1 = new WritableCellFormat(NumberFormats.INTEGER);


c. 정수형 ( 1000단위 마다 , 찍기 O )

jxl.write.NumberFormat moneytype1 = new NumberFormat("###,##0");

jxl.write.WritableCellFormat format_integer2 = new WritableCellFormat(moneytype1);


d. 실수형 ( 1000단위 마다 , 찍기 X )

jxl.write.WritableCellFormat format_float1 = new WritableCellFormat(NumberFormats.FLOAT);


e. 실수형 ( 1000단위 마다 , 찍기 0 , 소수점 2자리 허용 )

jxl.write.NumberFormat moneytype2 = new NumberFormat("###,##0.00");

jxl.write.WritableCellFormat format_float2 = new WritableCellFormat(moneytype2);


4) CELL Color & BackGround 지정하기

format_column.setBackground(jxl.format.Colour.GRAY_25 );

format_column.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN );


5) DB To Excel


a. Head 부분 생성하기

for ( cellnum = 0; cellnum < column.length; cellnum++ ) {

label = new jxl.write.Label(cellnum,0,column[cellnum],format_column);

sheet.addCell(label);

}


b. Data 집어 넣기

for ( rownum = 1; rownum <= data.size() ; rownum++) {

dataResult = (String[])data.get(rownum-1);


for (cellnum = 0; cellnum < dataResult.length - 1; cellnum++) {

num = new jxl.write.Number(cellnum, rownum, Long.parseLong(dataResult[cellnum+1]),format_integer2);

sheet.addCell(num);

}

}


3. JSP에서 사용하기

<%@ page import="java.util.Vector, crm.util.Util, java.sql.*" contentType="text/html; charset=euc-kr" %>

<jsp:useBean id="cExcel" class="crm.util.CreateExcel" scope="page"/>


cExcel.CreateExcelFile(queryResult,column,columntype,file_path+file_name,sheet_name,str_search);


4. 요구 사항에 맞게 확장하기


JXL API를 제공하는 홈페이지에 가면 JXL API SDK를 다운 받을 수 있다.

JXL API SDK를 다운 받은 후 사용자 요구 사항에 맞게 수정을 하면 될 것이다


spring에서 excel, pdf 파일 다운로드 관련 로직(Abstractjexcel 사용)

http://netframework.tistory.com/m/post/392


setContentType 을 설정하는 이유. 

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0QPBp&articleno=243