jxl을 통한 엑셀 저장하기

개발 이야기/Java | 2008. 1. 16. 14:08
Posted by 시반

먼저 관련사이트 에서 jexcelapi 를 다운받는다.

압축파일을 열어보면 관련 javadoc 및 소스파일도 함께 있으니 참고하시길...

여하튼 jxl.jar 파일을 관련 프로젝트에 등록한다.

 

<관련 클래스 간략설명>

jxl.write.WritableWorkbook : workbook,sheet등을 생성 및 관리하기 위한 엑셀파일관리 추상 클래스

jxl.Workbook : 기본 엑셀파일 추상 클래스

jxl.write.WritableSheet : sheet를 관리하는 인터페이스

jxl.write.WritableCellFormat : 엑셀 내 cell관련 포맷정보

jxl.write.Label : 엑셀내 필드명(엑셀의 cell에 들어있는 데이타 값이라 생각하면 된다)

jxl.write.Blank : 빈 cell관리 클래스

 

<엑셀 처리>

1. 엑셀파일을 생성한다

 WritableWorkbook testExcel = Workbook.createWorkbook(new File("sample.xls"));

 

  기존의 엑셀파일을 읽어와 처리하고자 하는 경우에는 다음과 같다.

 

 WritableWorkbook testExcel = Workbook.getWorkbook(new File("sample.xls"));

 

2. 생성된 엑셀관리 객체의 sheet를 선택한다

 WritableSheet sheet1 = testExcel.createSheet("1stShell", 0);

  위의 경우 새로이 생성된 엑셀파일내 새로운 sheet를 추가하는 것이라면

 기존의 생성된 특정 sheet를 선택하고자 하는 경우 다음과 같다

 WritableSheet sheet0 = testExcel.getSheet("preShell") ;

 

3. 셀서식을 설정한다     

WritableCellFormat titleFormat= new WritableCellFormat(); 

 - 폰트 설정

WritableCellFormat은 쉘정열 및 테두리설정 및 배경색 등 셀서식과 관련된 설정을 할 수 있다.

폰트 설정의 경우 다음과 같이 처리한다.

 

WritableCellFormat titleFormat
  = new WritableCellFormat(
           new WritableFont (WritableFont.ARIAL,              //폰트 타입.Arial 외 별다른건 없는듯 하다.
                                 20,                                          //폰트 크기
                                 WritableFont.BOLD,                  //Bold 스타일
                                 false,                                      //이탤릭체여부
                                 UnderlineStyle.NO_UNDERLINE, //밑줄 스타일
                                 Colour.WHITE,                         //폰트 색
                                 ScriptStyle.NORMAL_SCRIPT)); //스크립트 스타일

 

폰트 설정의 경우 위와 같이 Font설정 객체를 생성한후 서식객체 생성시 인자로 넣으면 된다.

다양한 생성자를 제공하고 있으니 굳이 위화면과 같이 할 필요는 없다. (API 참조)

 

-셀 서식 설정

기타 셀서식과 관련 주로 사용하는 기능을 설명하면 다음과 같다.

     titleFormat.setAlignment(Alignment.CENTRE);                     // 셀 가로정열(좌/우/가운데설정가능)
     titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 셀 세로정렬(상단/중단/하단설정가능)
     titleFormat.setBorder(Border.ALL, BorderLineStyle.THICK);  // 보더와 보더라인스타일 설정
     titleFormat.setBackground(Colour.ICE_BLUE);                    // 배경색 설정

4. 데이타를 셀에 등록한다

 Label title = new Label(0, 0, "테스트 타이틀",  titleFormat);  //라벨(열,행,"문장",포멧) : 숫자형은 Number를 사용
 sheet1.addCell(title);                                                // sheet1의 1열1행에 "테스트 타이틀"이라는 데이타를 넣는다

 

--> 데이타 등록을 위한 Label 생성시 첫번째 인자는 sheet의 열, 두번째 인자는 행을 의미한다는 것에 주의...

 

5. Sheet 디자인 설정(*^^*)

이부분은 해도 그만 안해도 그만이지만 깔끔한 엑셀저장을 위한 선택코스?

 

-셀 크기 변경

관련메소드는 setColumnView(몇번째 컬럼, 넓이)
   sheet1.setColumnView(0, 20); //sheet1의 첫번째 열의 크기를 20으로 설정한다

또는

  CellView cv = sheet1.getColumnView(0);

  cv.setSize(30);                    

  sheet1.setColumnView(0,cv);    //기존의 열정보 변경. 30으로 변경한다  

 

- 셀병합

   sheet1.mergeCells(0, 0, 5, 0 ); //sheet1의 1열1행의 cell을 6열1행의 셀까지 병합한다.

 

- 빈 셀 처리 

  Blank blank = new Blank(6, 0, titleFormat); // 빈 셀(열,행,포멧)

  sheet1.addCell(blank);                             // 위의 병합셀옆에 같은서식의 빈셀추가

 

6. 데이타를 파일에 저장한다. 

   testExcel.write(); // 쓰고

   testExcel.close(); // 닫자

 

서두에서 밝힌바와 같이 기타 관련 API의 내용은 압축파일내 docs 디렉토리 밑에 나와 있어여..

'개발 이야기 > Java' 카테고리의 다른 글

@Override 사용하기  (0) 2008.01.24
Generic 사용하기..*^^*  (0) 2008.01.23
JAVA API Chm파일 다운로드 링크  (0) 2007.12.21
[JBoss 보안] DataSource 패스워드 암호화  (0) 2007.06.26
[java] 예약어 enum  (0) 2007.06.04
 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)