개발/윈도우
MFC에서 Excel 파일을 불러오는 방법
-=HaeJuK=-
2024. 11. 21. 13:48
반응형
MFC에서 Excel 파일 불러오기
1. 준비 단계
- Visual Studio에서 Excel COM 라이브러리를 참조로 추가.
- 프로젝트 속성에서 Excel OLB 파일 경로를 지정.
#include "afxdisp.h"
를 프로젝트에 포함.
2. 주요 구현 단계
- COM 라이브러리 초기화:
AfxOleInit()
와CoInitialize()
사용. - Excel Application 객체 생성:
CoCreateInstance
호출. - Excel 파일 열기:
Workbooks.Open
메서드를 호출하여 파일 열기. - 셀 데이터 읽기: 특정 워크시트와 셀 선택 후 값 가져오기.
- COM 해제:
CoUninitialize()
호출로 리소스 해제.
3. 예제 코드
#include "afxdisp.h"
void ReadExcelFile() {
if (!AfxOleInit()) { AfxMessageBox(_T("COM 초기화 실패")); return; }
CoInitialize(NULL);
try {
// Excel Application 생성
CComPtr<IDispatch> pExcelApp;
CLSID clsid;
CLSIDFromProgID(L"Excel.Application", &clsid);
CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&pExcelApp);
// Workbook 열기
CComPtr<IDispatch> pWorkbooks, pWorkbook;
VARIANT filePath = { VT_BSTR, L"C:\\Users\\User\\Documents\\example.xlsx" };
pExcelApp->Invoke(L"Workbooks", IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, NULL, &pWorkbooks);
pWorkbooks->Invoke(L"Open", IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &filePath, &pWorkbook);
// 셀 값 읽기
CComPtr<IDispatch> pSheet, pCell;
CComVariant sheetIndex(1), cellRow(1), cellColumn(1);
pWorkbook->Invoke(L"Sheets", IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &sheetIndex, &pSheet);
pSheet->Invoke(L"Cells", IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &cellRow, &cellColumn, &pCell);
CComVariant cellValue;
pCell->Invoke(L"Value", IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, NULL, &cellValue);
// 결과 출력
CString result;
result.Format(_T("A1 셀 값: %s"), cellValue.bstrVal);
AfxMessageBox(result);
} catch (...) { AfxMessageBox(_T("오류 발생")); }
CoUninitialize();
}
728x90