Java

jxl.jar 이용해서 엑셀파일 읽어 들이기~

조심이 2008. 7. 24. 11:10
반응형

SWT 로 엑셀 파일을 선택해서 디비에 넣는걸 짜야할 일이 생겨 만들었는데
그중 SWT 와 다른 부분은 제외한 엑셀을 읽어 처리하는 부분이다.

POI 도 써봤지만 jxl 이 훨씬더 간단하고 편하다.
엑셀을 읽어들여서 처리하는 부분은 각자의 입맛에 맞게 처리하면 될듯.ㅋ

jxl.jar를 다운받아 라이브러리에 추가해 주어야 함..(밑에 파일 첨부 되어있음)



import jxl.*;

public void doExcel(String fileName){
    
  try{
 
 //fileName ="C:\test.xls";
 Workbook myWorkbook = Workbook.getWorkbook(new File(fileName)); // 파일을 읽어 와서...

 Sheet mySheet = myWorkbook.getSheet(0); // 정확한 쉬트를 입력 받아서...쉬트가 1개일 경우
     
 
        ArrayList list = new ArrayList();
     
        int no=0;
        for(no=1;no<mySheet.getRows();no++){ // 행의 갯수 만큼 돌리고
          HashMap map = new HashMap();
       
            for(int i=0;i<=13;i++){ // 열의 갯수 만큼 돌려서
            
               Cell myCell = mySheet.getCell(i,no); // 셀의 행과 열의 정보를 가져온 후...
              
               String t = "";
             
              
               if(i==1){ //두번째 컬럼
               
                map.put("BIZ_NO", myCell.getContents() );
               }
              
               if(i==2){  //세번째 컬럼
                map.put("CAR_WASH_YN", myCell.getContents() );
               }
          }         

            list.add(map);
             log("data: "+map);
       
         }
         log("==============================================================");
         log("읽은 건수 :"+no+" 건");
         log("==============================================================");
      //디비에 저장
        doOsDataBase(list);
        
        
        }catch (Exception e) {
   log(""+e);
         e.printStackTrace();
  }
 }


public void  doOsDataBase(ArrayList list){
 
 
   log("================================================================");
      log("데이터 베이스 셋팅");
      log("================================================================");
  //DB에 입력
  Connection con = null;
  PreparedStatement cstmt = null;
  ResultSet rs = null;
  StringBuffer query=null;
 
  int ret = 0;
  int addCnt=0;
  try {

  /********** DB 커넥션 부분**********************/
/*
   Driver driver = (Driver) Class.forName(driverClasses).newInstance();
   DriverManager.registerDriver(driver);

   java.util.Properties prop = new java.util.Properties();
   prop.put("user", USERID);
   prop.put("password", PASS);
   prop.put("CHARSET", "eucksc");
   con = DriverManager.getConnection(URL, prop);
   con.setAutoCommit(false);
*/

   
   query = new StringBuffer();
   query.append("" +
    insert into 테이블 value(?,?)
);

   
   cstmt = con.prepareStatement(query.toString());
 
     int i=0;
     for( i=0;i<list.size();i++){
       HashMap valht = new HashMap();
    valht = (HashMap)list.get(i);
    int k=0;
   
   
    cstmt.setString(++k,(String)valht.get("CAR_WASH_YN") );
    cstmt.setString(++k,(String)valht.get("MAINT_YN") );
       cstmt.addBatch();
    addCnt++;
   
     log("===================================================================");
        log("업데이트  번호  : "+addCnt+" ");
        log("===================================================================");
 
   
   
     }
     cstmt.executeBatch();
    
   
   
   if(addCnt>1){
   
    con.commit();
     
   
     log("===================================================================");
        log("처리 완료 , 처리 데이터 수 : "+i+" 건");
        log("===================================================================");
   
   }else{
     log("===================================================================");
        log("처리롤백됨===");
     log("===================================================================");
   
 con.rollback();
   }
   
   
   ret = 1;
   
  } catch (SQLException e) {
   
   try{
     log("===================================================================");
        log("에러 롤백===");
     log("===================================================================");
    con.rollback();
   }catch(Exception ea){
   
   }
   log(e.toString());

  } catch (Exception e) {
   try{
     log("===================================================================");
        log("에러 롤백===");
     log("===================================================================");
    con.rollback();
   }catch(Exception ea){
   
   }
   log(e.toString());
  } finally {
   if (rs != null)
    try {
     rs.close();
    } catch (SQLException e) {
     log(e.toString());
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   if (cstmt != null)
    try {
     cstmt.close();
    } catch (SQLException e) {
     log(e.toString());
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   if (con != null)
    try {
     con.close();
    } catch (SQLException e) {
     log(e.toString());
     // TODO Auto-generated catch block
     e.printStackTrace();
   
    }

  }
 
 }

반응형