엑셀데이터를 엑셀버전 상관없이 가져오고싶을때.

Microsoft.ACE.OLEDB.12.0 프로바이더를 사용하면 깔끔하게 가져온다.

 

프로바이더 오류가 발생한다면 2007 Office System Driver: Data Connectivity Components 를 설치하면 된다.

 

http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

 

 

m_strConn.Format(_T("PROVIDER=Microsoft.ACE.OLEDB.12.0;

"DATA SOURCE=%s;EXTENDED PROPERTIES=\"Excel 12.0;HDR=YES;\""), strFile);

 

 

 //=========================================================
 // ODBC 연결
 //=========================================================
 CDatabase dba;

 BOOL bOpen = dba.OpenEx(strODBCConn, CDatabase::noOdbcDialog);

 if(!bOpen)
 {
  MessageBox( _T("Source File이 엑셀 형식의 파일이 아닙니다!!"), _T("Word Learning") );

  return;
 }

 CRecordset rs(&dba);

 CString strQuery = _T("");

 strQuery = "select num, word, desc from [word$]";

 rs.Open(CRecordset::dynaset, strQuery);

 int nCount = 0;
 CString strWord = _T("");
 CString strDesc = _T("");

 while(!rs.IsEOF())
 {
  rs.GetFieldValue(_T("word"), strWord);
  rs.GetFieldValue(_T("desc"), strDesc);

 

  nCount++;

  rs.MoveNext();
 }

 dba.Close();

안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,