HOWTO: MFC 사용하여 자동화 사용하여 Excel에 DAO 레코드 복사

기술 자료 번역 기술 자료 번역
기술 자료: 243394 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

Microsoft Excel 워크시트에 끌어 데이터 액세스 개체 (DAO) 레코드 집합의 내용을 복사하려면 Range 개체의 CopyFromRecordset 메서드를 노출합니다. 이 문서에서는 MFC DAO 다음 자동화를 사용하여 Excel 워크시트로 복사할 수 있는 레코드 집합을 만드는 방법을 보여 줍니다.

추가 정보

다음 단계는 모든 레코드 집합을 얻을 수 있는 방법을 보여 주는 샘플 액세스 "제품" 테이블의 레코드를 Northwind.mdb 데이터베이스 및 Excel 워크시트에 끌어 해당 레코드 집합의 내용을 복사하려면 자동화하는. 이 예제에서는 Access 데이터베이스를 해당 레코드 집합을 사용하지만 ODBC 제공할 수 있는 모든 데이터베이스의 사용할 수 연결 문자열입니다. DAO를 사용하여 ODBC 데이터 소스를 사용하는 방법에 대한 자세한 내용은 MFC DAO 온라인 도움말을 참조하십시오.

예제 코드

  1. 대화 상자 기반 및 AutoExcel 라는 새 MFC 응용 프로그램 EXE 프로젝트를 시작하십시오.
  2. 보기 메뉴에서 클래스 를 클릭하거나 Ctrl + W 를 누릅니다. 자동화 탭에서 "시작 작업은 형식 라이브러리" 선택한 클래스 추가 클릭하십시오. (Excel 97 Excel8.olb, Excel 2000의 Excel9.olb 또는 Excel.Exe Excel 2002 및 Excel 2003) Excel 형식 라이브러리를 찾아 이동하십시오.
    참고: 형식 라이브러리를 실행 Excel 같은 디렉터리에 위치합니다.
  3. 모든 클래스는 클래스 제공하는 Excel 형식 라이브러리에 추가하십시오.
  4. 대화 상자 리소스에 IDC_RUN 라는 단추를 추가하면 IDD_AUTOEXCEL_DIALOG 및 단추 처리기에 다음 코드를 추가합니다.
    
    void CAutoExcelDlg::OnRun() 
    {
        //For optional arguments
        COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
    
        CDaoDatabase db;
        CDaoRecordset rs;
        CString sConn;
        long lNumCols;
    
        //Get a recordset that represents all the records in the Products 
        //table of the sample Northwind database
        sConn = 
         "C:\\Program Files\\Microsoft Office\\Office\\Samples\\Northwind.mdb";
        db.Open(sConn, FALSE, FALSE);
        rs.m_pDatabase = &db;    
        rs.Open(AFX_DAO_USE_DEFAULT_TYPE, "Select * From Products", 0);
        lNumCols = rs.GetFieldCount();
    
        //Start a new workbook in Excel
        _Application oApp;
        oApp.CreateDispatch("Excel.Application");
        if (!oApp)
        {
            AfxMessageBox("Cannot start Excel");
            return;
        }
    
        Workbooks oBooks = oApp.GetWorkbooks();
        _Workbook oBook = oBooks.Add(vOpt);
        Worksheets oSheets = oBook.GetWorksheets();
        _Worksheet oSheet = oSheets.GetItem(COleVariant((short)1));
        Range oRange;
    
        //Transfer the data in the recordset to the worksheet
        COleDispatchDriver rs2;
        rs2.AttachDispatch((LPDISPATCH) rs.m_pDAORecordset);
        oRange = oSheet.GetRange(COleVariant("A2"), vOpt);
        oRange.CopyFromRecordset((LPUNKNOWN) rs2.m_lpDispatch, vOpt, vOpt);
        rs2.DetachDispatch();
        rs2.ReleaseDispatch();
    
        //Add the field names to row 1
        CDaoFieldInfo FieldInfo;
        for(long i=0; i<=lNumCols-1;i++)
        {
            oRange = oSheet.GetRange(COleVariant("A1"), vOpt);
            oRange = oRange.GetOffset(vOpt, COleVariant(i));
            rs.GetFieldInfo(i, FieldInfo, AFX_DAO_PRIMARY_INFO);
    
            oRange.SetValue(COleVariant(FieldInfo.m_strName));
            // For Excel 2003, SetValue takes two parameters.
           // oRange.SetValue(COleVariant(FieldInfo.m_strName),COleVariant());
        }
    
        //Format the worksheet
        oRange = oSheet.GetRange(COleVariant("A1"), vOpt);
        oRange = oRange.GetResize(COleVariant((short)1), 
                                  COleVariant(lNumCols));
        Font oFont = oRange.GetFont();
        oFont.SetBold(COleVariant((short)TRUE));
        oRange = oRange.GetEntireColumn();
        oRange.AutoFit();
    
        //Make Excel visible and give the user control
        oApp.SetVisible(TRUE);
        oApp.SetUserControl(TRUE);
    }
    
    						
  5. Excel 형식 라이브러리에서 클래스 수 CAutoExcelDlg.cpp 생성된 헤더 파일을 포함하십시오. 예를 들어,:
        #include "excel8.h" /// For Excel 2003, use #include "excel.h"
    						
    참고: 이 지시문은 컴파일러 오류가 발생하지 않도록 "Stdafx.h" 포함 후 추가.
  6. MFC DAO StdAfx.h에 [NULL]에 대한 헤더 파일 포함:
        #include <afxdao.h>
    						
  7. AutoExcel.cpp CAutoExcelApp::InitInstance 수정하여 응용 프로그램이 시작될 때 COM 서비스를 초기화할 수 있도록:
        if(!AfxOleInit())
        {
            AfxMessageBox("Cannot initialize COM services.");
            return FALSE;
        }    
    						
    참고: DoModal() 호출하기 전에 이 코드를 추가합니다.
  8. 빌드 및 응용 프로그램을 실행하십시오.
  9. 대화 상자에 있는 단추를 클릭하십시오. 단추 처리기에 완료될 때 Excel 에서 통합 문서의 첫 번째 워크시트에 Northwind Products 테이블의 내용이 표시됩니다.

속성

기술 자료: 243394 - 마지막 검토: 2007년 1월 25일 목요일 - 수정: 4.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
키워드:?
kbmt kbautomation kbhowto KB243394 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com