Mfc Excel Tlb[1]

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Mfc Excel Tlb[1] as PDF for free.

More details

  • Words: 514
  • Pages: 11
엑셀 TypeLibrary를 이용한 MFC 프로그램 1.TypeLibrary를 클래스 위자드에서 추가

2.엑셀 선택(윈도우2000, 오피스2000)

3.필요한 클래스 선택

4.클래스가 임포트된 모습 과 변수선언

5.생성된 클래스는 모두 excel9.h 와 excel9.cpp에 저장됩니다. 추후 다른 클래스를 추가 할때는 위와 같은 동작을 반복하여 추가 하고자 하는 클래스를 선택 하면 자동으로 excel9.h 와 excel9.cpp에 추가 됩니다 #include "excel9.h" 를 선언하고 사용하면 됩니다.

사용 예제 1. OLE를 실행시키기 위한 초기화함수를 호출합니다. BOOL CExcelPrtApp::InitInstance() { AfxOleInit(); ... } 어플리케이션 실행시 단 한번 호출합니다.

2. Excel Object생성 TRY { //-----------------------------------------------------* // app 엑셀 오브젝트 생성 //-----------------------------------------------------* if(!app.CreateDispatch("Excel.Application")) { AfxMessageBox("Could not start EXCEL!"); return; } app.SetVisible(TRUE);

//-----------------------------------------------------* // Get Workbooks //-----------------------------------------------------* LPDISPATCH lpdisp; lpdisp=app.GetWorkbooks(); ASSERT(lpdisp); books.AttachDispatch(lpdisp); //-----------------------------------------------------* // FileOpen //-----------------------------------------------------*

//LPCTSTR Filename, const VARIANT& UpdateLinks, const VARIANT& ReadOnly, //const VARIANT& Format, const VARIANT& Password, const VARIANT& WriteResPassword, //const VARIANT& IgnoreReadOnlyRecommended, const VARIANT& Origin, const VARIANT& Delimiter, //const VARIANT& Editable, const VARIANT& Notify, const VARIANT& Converter, //const VARIANT& AddToMru /* books.Open(XlsFile, VOptional, VBoolTrue, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional); */

//-----------------------------------------------------* // Get WorkBook //-----------------------------------------------------* lpdisp=books.Add(VOptional); //새로운 엑셀객체를 생성하였을 경우 //lpdisp=books.Get_Default(COleVariant((short)(1))); //FileOpen()일 경우 ASSERT(lpdisp); book.AttachDispatch(lpdisp); //-----------------------------------------------------* // Get WorkSheets //-----------------------------------------------------* lpdisp=book.GetSheets(); ASSERT(lpdisp); sheets.AttachDispatch(lpdisp); //-----------------------------------------------------* // Get WorkSheet //-----------------------------------------------------*

lpdisp=sheets.GetItem(VShort1); ASSERT(lpdisp); sheet.AttachDispatch(lpdisp); } CATCH(CException, e) { book.Close(VBoolFalse, VOptional, VOptional); app.Quit(); app.ReleaseDispatch(); } END_CATCH 3. Excel Object 사용 – Cell에 Data 쓰기 Range range; range = Sheet.GetRange(COleVariant(“A1”), COleVariant(“A1”)); range.SetValue(COleVariant(“가나다”)); 4. Excel Object 사용 – 날짜(숫자)형식의 데이타를 텍스트 형식으로 Cell에 쓰기 const char COLUMN_POSITION = 'A'; int iRow = 1; char szColName[8]; memset(szColName, 0x00, sizeof(szColName)); for(i=0; i<7; i++) { sprintf(szColName, "%c%d", COLUMN_POSITION+i, iRow); range

=

Sheet.GetRange(COleVariant(szColName),

COleVariant(szColName)); range.SetNumberFormatLocal(COleVariant("@")); //text형식 range.SetValue(COleVariant(szWord)); } *숫자형식(xxx,xxx) => "#,##0_ " *날짜형식(yyyy년 mm월 dd일) => "yyyy""년"" m""월"" d""일"( 데이터"3/5/2002")

4. Excel Object 사용 – 선택영역 copy , paste const char COLUMN_POSITION = 'A'; char szColName[8]; char szColNameTo[8]; Range range; int iRow = 1; memset(szColName, 0x00, sizeof(szColName)); memset(szColNameTo, 0x00, sizeof(szColNameTo)); sprintf(szColName, "%c%d", COLUMN_POSITION, iRow); sprintf(szColNameTo, "%c%d", COLUMN_POSITION+7, iRow); range = pSheet->GetRange(COleVariant(szColName), COleVariant(szColNameTo)); range.Copy(VOptional); // 셀 A1:H1을 copy iRow = iRow + 1; memset(szColName, 0x00, sizeof(szColName)); sprintf(szColName, "%c%d", COLUMN_POSITION, *iRow); range = pSheet->GetRange(COleVariant(szColName), COleVariant(szColName)); range.Select(); // 셀 A2로 이동 pSheet->Paste(VOptional, VBoolFalse); //paste 5. Excel Object 사용 – 선택영역에 라인 그리기 Range range range = sheet.GetRange(COleVariant("A1"), COleVariant(“H10”)); range.Select(); // 셀 A1:H10 선택 Borders borders; borders = range.GetBorders(); borders.SetLineStyle(COleVariant((short)xlContinuous)); //실선으로 라인 그리기

6. Excel Object 사용 – 열넓이 자동 조정 range.Select();

range = range.GetEntireColumn(); range.AutoFit(); 6. Excel Object 사용 – 인쇄 pagesetup = sheet.GetPageSetup();

//페이지설정

pagesetup.SetZoom(VBoolFalse);

//배율-자동맞춤

pagesetup.SetFitToPagesWide(VShort1);

//용지너비 : 1

pagesetup.SetFitToPagesTall(VBoolFalse);

//용지넓이 : none

range = sheet.GetRange(COleVariant("A1"), COleVariant(szRange)); range._PrintOut(VShort1,

// From (page #).

VShort1,

// To (page #).

VShort1,

// Copies.

VBoolFalse,

// Preview.

VOptional,

// ActivePrinter.

VBoolFalse, // PrintToFile. VBoolTrue);

// Collate.

7. Excel 종료 Object 제거 book.Close(VBoolFalse, VOptional, VOptional); app.Quit(); app.ReleaseDispatch(); 8. (참고) COleVariant변수 선언, 변수 초기화 *선언 COleVariant VShort0; COleVariant VShort1; COleVariant

VBoolFalse;

COleVariant

VBoolTrue;

COleVariant

VOptional;

*초기화 VShort0.ChangeType(VT_I2); VShort0 = (short)0;

VShort1.ChangeType(VT_I2); VShort1 = (short)1; VBoolFalse.ChangeType(VT_BOOL); VBoolFalse = (long)FALSE; VBoolTrue.ChangeType(VT_BOOL); VBoolTrue = (long)TRUE; COleVariant m5((long)DISP_E_PARAMNOTFOUND, VT_ERROR); VOptional.ChangeType(VT_ERROR, m5); *선언과 초기화를 동시에 COleVariant VShort1((short)1); //이런식으로...

참고 - Excel 매크로 사용법 1.도구 – 매크로 – 새 매크로 기록

2.매크로가 기록중인 화면 - 데이터를 입력합니다.

3. 매크로 중지

4.기록된 매크로 보기

5.Visual Basic Editor화면

Related Documents

Mfc Excel Tlb[1]
May 2020 5
Lp141wx3-tlb1
October 2019 16
Mfc--jeffs
November 2019 11