본문 바로가기

TechLog

ADO에서 엑셀 2007(.xlsx) 파일 데이터 다루기

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 드라이버가 설치되어 있지 않기 때문인데 ... 이 드라이버는 오피스와 별도로 다운받을 수 있도록 되어 있다. 다음 주소에서 다운받으면 된다 :

http://www.microsoft.com/download/en/details.aspx?id=13255