엑셀데이터를 엑셀버전 상관없이 가져오고싶을때.
Microsoft.ACE.OLEDB.12.0 프로바이더를 사용하면 깔끔하게 가져온다.
프로바이더 오류가 발생한다면 2007 Office System Driver: Data Connectivity Components 를 설치하면 된다.
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();
'Development > C/C++' 카테고리의 다른 글
윈도우 소켓 에러 값 설명 (0) | 2011.08.13 |
---|---|
오픈소스 Memory pool 성능 비교 (0) | 2011.08.13 |
쓰레드 ID 가져오기 : GetCurrentThreadId() (0) | 2011.08.13 |
소켓 함수 처리시간 측정 (0) | 2011.08.13 |
버퍼 오버플로우(buffer overflow) (0) | 2011.08.13 |
