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();
}
}
}
'Java' 카테고리의 다른 글
java.lang.UnsupportedClassVersionError: Bad version number in .class file 에러 날때.. (0) | 2009.05.06 |
---|---|
간단한 스케줄링 데몬 만들기.. (0) | 2008.11.25 |
POI 이용해 엑셀파일 읽기 (0) | 2008.07.28 |
자바 메일 발송하기. (0) | 2008.07.28 |
자바 Serializable(객체직렬화) 를 통해 소켓 전송 수신. (2) | 2008.07.28 |