관리 메뉴

HAMA 블로그

자바로 MS 문서 다루기 본문

Java

자바로 MS 문서 다루기

[하마] 이승현 (wowlsh93@gmail.com) 2015. 11. 5. 11:43


MDB(엑세스) 나 엑셀(XLS) 을 자바로 읽기위해서 , 먼저 JDBC-ODBC 를 알아보았는데

제어판에 32비트 , 64비트 ODBC 설정하는 부분에서  엑셀 , 엑세스에 대한 드라이버가 32비트만 설정가능한듯..

이것저것 찾아봤는데,  결국 나의 64비트 윈도우즈 8 에서는 답이 없는거 같아서 또 찾아보다가 발견한것.

생각해보니 한 7년전쯤에 , MFC 로 MDB 읽어서 사용하는 어플을 만들었다가, 32비트 OS 에서만 되서 망했던 

기억이 떠오르기도 하고... 


Apache POI (http://poi.apache.org/)


이런게 있더군요. 역시나 MS 세상에서  없을리가...한글 블로그도 엄청 많고..ㅎㅎ 

추천 블로그 : http://yanggoony.tistory.com/3


하지만 먼가 쿼리처럼 검색해서 데이터를 가져오고싶은데 그건 안되는것같네요. 그래서 일단 메모리로 올려서

검색기능을 직접만들어서 사용함.


P.S  

파이썬으로 MDB 읽어왔더니 (따로 ODBC 제어판에서 설정같은거 안하고) 바로됨 +.+  왜 자바로는 안됬을까? 

아마 자바가 64비트 버전이고 파이썬은 32비트 버전으로 윈도우에 깔아놔서 그런게 아닌가 싶습니다.

자바 32비트 버전깔아서 확인해보면 되는데.. 귀찮아서 ;;

import pypyodbc 
             
conn = pypyodbc.win_connect_mdb('D:\\Share\\EC_content\\ec_qst_20151104.mdb')

#connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\database.mdb'

#connection = pypyodbc.connect(connection_string)

cur = conn.cursor()

SQL = 'select Question from EC_QST where seq > 3000 and seq < 3010'


cur.execute(SQL)

print "column name"


for d in cur.description :
    print d[0]



print "data---"

for row in cur.fetchall() :
    for field in row :
            print (field, ' ')
    
    print (' ')

cur.close()
conn.close()


https://code.google.com/p/pypyodbc/

Comments