ADO를 통해 엑셀 데이터 다루기(http://kenial.tistory.com/549)라는 포스팅을 한 적이 있었다. 하지만 이 포스팅은 ADO를 통해서 xls 파일(다르게 말하자면, 엑셀 2003 이하 버전에서 저장한 파일)의 데이터를 읽어들이는데 사용할 수 있고, .xlsx(엑셀 2007 이상 버전에서 저장한 파일)의 경우에는 다른 DB Provider를 사용해야 한다. 간단한 c# 예제 코드를 보자면 다음과 같다 :
OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""C:\test.xlsx"";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"; conn.Open(); OleDbCommand comm = new OleDbCommand(); comm.Connection = conn; comm.CommandText = "Select * from [sheetname$]"; var reader = comm.ExecuteReader(); while (reader.Read()) { Console.WriteLine(string.Format("{0} {1} {2}", reader[0], reader[1], reader[2])); } reader.Close();
다만 위 예제를 사용할 경우, 컴퓨터에 오피스 2007이 설치되어 있지 않다면 다음과 같은 에러가 발생할 수 있다.
'Microsoft.ACE.OLEDB.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다.
이는 Access에서 제공하는 OLEDB 드라이버가 설치되어 있지 않기 때문인데 ... 이 드라이버는 오피스와 별도로 다운받을 수 있도록 되어 있다. 다음 주소에서 다운받으면 된다 :
'TechLog' 카테고리의 다른 글
WP 7.1의 UDP 소켓 프로그래밍 Workaround (0) | 2011.12.16 |
---|---|
작업일기.20111209 (0) | 2011.12.11 |
아이폰, 안드로이드, 윈도우 폰의 공통 내장 폰트 (1) | 2011.11.24 |
요즘 케냘의 DVCS 생활 (0) | 2011.11.18 |
시스템을 복원한 이후 부팅이 현저히 느려질 때 (0) | 2011.11.06 |