본문 바로가기

Development/MFC

VC++에서 MFC나 #import를 사용하지 않고 Excel을 자동화하는 방법

인터넷에서 ExcelLib라는 소스를 구했다.

  URL은 http://getroot.tistory.com/entry/Excel-Automation-Library 이곳에 가면 해당 소스를 무료로 오픈하여 사용할 수 있도록 했고, 사용법과 약간의 덧글들도 달려있다.

  이 소스를 자세히 뜯어보니 http://support.microsoft.com/kb/216686/ko 여기의 내용을 참고하여 만들어진 듯하다.

  인터넷을 좀더 찾아보니 Excel Automation에 관련된 소스가 몇가 있어, 분석을 했지만 ExcelLib가 내가 사용하는데 무리가 없어보여 선택했다.

  하지만, 프로젝트를 하면서 이 소스만 가지고 작업이 불가능하여 몇가지 기능(이미지 삽입, 시트 복사 등)을 추가했다. 

  이 소스를 사용하는데 나름 중요한 요소가 있어 글을 남긴다.

  AutoWrap() 함수는 직접 IDispatch를 사용하는 것과 관련된 대부분의 하위 수준 세부 사항을 단순화합니다. 사용자 자신의 구현에서 자유롭게 사용하십시오. 한 가지 주의할 점은 여러 개의 매개 변수를 전달할 때는 역순으로 전달해야 한다는 것입니다. 예를 들면 다음과 같습니다.
    VARIANT parm[3];
    parm[0].vt = VT_I4; parm[0].lVal = 1;
    parm[1].vt = VT_I4; parm[1].lVal = 2;
    parm[2].vt = VT_I4; parm[2].lVal = 3;
    AutoWrap(DISPATCH_METHOD, NULL, pDisp, L"call", 3, parm[2], parm[1], parm[0]); 
 

바로 빨강색으로 표시한 이 부분이다.

이부분만 주의하면 나머진 사용하는 크게 지장이 없을듯하다.

소스를 내 블로그에 등록할려다가 그러면 ExcelLib를 만든사람의 블로그에 지장이 있을것 같아 소스는 등록 안했다. 혹시 소스가 궁금하거나 문의사항이 있으면 메일이나 이 블로그에 덧글을 남기길 바란다.


 

'Development > MFC' 카테고리의 다른 글

MDB를 연결해서 사용해보자  (0) 2012.09.17
CString으로 문자열 리소스를 이용하자  (0) 2012.09.07
문자열 함수 정리  (0) 2012.09.07
CString으로 문자열 리소스를 사용하자  (0) 2012.09.06
CString Method 설명  (0) 2012.09.05