본문 바로가기

jsp

자바<JAVA> JXL 이용하여 엑셀에 쓰기 초간단 예제

자바<JAVA> JXL 이용하여 엑셀에 쓰기 초간단 예제 자바 프로그램

2009/10/30 16:08

복사 http://blog.naver.com/lover4908/110072755668

첨부파일 (1)

지금까지 줄곧 엑셀이 데이터 엑스포트 개발하는데에 POI를 써왔는데요.

지금 프로젝트 하는 곳에서는 JXL이라는 녀석을 쓰기를 권장하더군요.

 

그냥 데이터만 쓰면 되는지라 , 이런 저런 기능 빼고 단간하게 만들었습니다.

 

/**
 *
 */

import java.io.File;
import java.io.IOException;

import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

/**
 * @author JunSeong
 *
 */
public final class EtcUtil {

 

 
 /**
  * @param file
  * @param data
  * @throws Exception
  */
 public final static void simpleExcelWrite(File file , String data[][]) throws Exception {
  
  WritableWorkbook workbook = null;
  WritableSheet sheet = null;
  
  try {
   
   workbook = Workbook.createWorkbook(file);     //지정된 파일명 경로로 워크북 즉 엑셀파일일 만듭니다.
   workbook.createSheet("Sheet", 0);                    //지정한 워크북에 싯트를 만듭니다. "Sheet" 가 싯트명이 됩니다.
   sheet = workbook.getSheet(0);                         //시트를 가져옵니다.
   
   WritableCellFormat cellFormat = new WritableCellFormat();    //셀의 스타일을 지정하기 위한 부분입니다.
   cellFormat.setBorder(Border.ALL , BorderLineStyle.THIN);      //셀의 스타일을 지정합니다. 테두리에 라인그리는거에요
   
   // 빙글빙글 돌리면서 엑셀에 데이터를 작성합니다.
   for(int row = 0 ; row<data.length ; row ++) {
    for(int col = 0 ; col < data[0].length ; col++) {
     Label label = new jxl.write.Label(col , row , (String) data[row][col] , cellFormat);
     sheet.addCell(label);
    }
   }
   
   workbook.write();
   
  } catch (Exception e) {
   e.printStackTrace();
   throw e;
  } finally {
   try {
    if(workbook != null) workbook.close();
   } catch (WriteException e) {
    //e.printStackTrace();
   } catch (IOException e) {
    //e.printStackTrace();
   }
  }
  
 }
 
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  
  String[][] data = new String[][] {
    {"COL1" , "COL2" , "COL3" , "COL4"} ,
    {"DATA11" , "DATA12" , "DATA13" , "DATA14"} ,
    {"DATA21" , "DATA22" , "DATA23" , "DATA24"} ,
    {"DATA31" , "DATA32" , "DATA33" , "DATA34"}
  };
  
  try {
   EtcUtil.simpleExcelWrite(new File("C:/test.xls"), data);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

main 는 실행테스트 입니다.

위에 실행하면 아래와 같이 엑셀이 만들어 지더군요.

 

 

저만 그런건지 다른사람도 그런건지는 모르겟지만 , 사람을 약간 헷갈리게 하는 요소가 하나 있더군요.

Label label = new jxl.write.Label(col , row , (String) data[row][col] , cellFormat);
이 부분인데 , 라벨을 생성할때 생성자에 시트에 삽입될때 , 삽입될 위치까지 지정하는데 (col 과 row) 보통 행 그리고 열 이런식으로 지정하지 않나요?? 근데 이놈은 열 다음에 행을 지정합니다. 좀 헷갈리더군요. ㅋㅋ

 

JXL의 API를 살펴보니 , POI보다는 기능이 확실히 떨어집니다.

물론 , 지금은 스타일이 많은게 필요없어서 테두리만 쳤지만 , 색깔이나 이런거는 다 됩니다. 자세한것은 API 찾아보세요. 비교적 간단하더군요. 제가 간단한것만 봐서인지를 모르겟지만....

 

JXL이 POI보다 기능은 확실이 적지만 , 지금처럼 간단하게 데이터만 쓰는 작업이라고 한다면 , 훨씬 간단하고 편하더군요.

 

JXL를 사용하기 위해서는 JAR파일이 하나 필요합니다. 올려둘테니 필요하신분은 받으세요.

 

다음에는 JXL에서 파일 읽어드리는 포스트를 작성하겠습니다.

 

그 다음에는 POI를 ????