IT_Programming/Java

jxl을 통한 엑셀 저장하기

JJun ™ 2008. 1. 25. 11:29

먼저 관련사이트 에서 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(); // 닫자

 

jexcelapi_2_6_6.zip
2.33MB