티스토리 뷰
728x90
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();
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 블루버블
- 블루버블다이브팀
- effective
- 현포다이브
- PowerShell
- 성산블루버블
- C
- C#.NET
- script
- 네트워크 정보
- Linux
- DLL
- OpenSource
- 울릉도
- C# 고급 기술
- CMake
- 외돌개
- Windows
- 스쿠버다이빙
- 패턴
- 서귀포블루버블
- Effective c++
- Build
- 블루버블다이빙팀
- 제주도
- C#
- C++
- 스쿠버 다이빙
- 서귀포
- 암호화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
250x250