Excel Automation Tutorial Using MFC...프로젝트생성 8 Set Up 클래스추가 9 Set Up...

Post on 24-Jan-2020

17 views 0 download

Transcript of Excel Automation Tutorial Using MFC...프로젝트생성 8 Set Up 클래스추가 9 Set Up...

ISL / 강한솔

: Using MFCExcel Automation Tutorial

IndexIndex

2

Motivation of Study

Excel Automation

Set Up

Class

Demo

2019-04-10

3

Motivation of Study

Intek Plus Server Program엑셀저장기능

4

Motivation of Study

Intek Plus Server Program

5

Excel Automation

Automation

: 응용프로그램외부에서응용프로그램객체를조작할수있는방법. 표준소프트웨어아키텍처인COM에기반을둠.

COM(Component Object Model)

: 다른소프트웨어제작사에의해만들어진컴포넌트를자신의소프트웨어에서사용할수있게하는소프트웨어아키텍쳐.

Type Libraires

: COM Object의기능에관한정보를제공하는파일.

Excel Automation : 엑셀이아닌다른프로그램(MFC)를이용하여엑셀을조작하는것.

6

Set Up

프로젝트생성

7

Set Up

프로젝트생성

8

Set Up

클래스추가

9

Set Up

클래스추가

10

클래스추가

Set Up

10

11

Set Up

클래스추가

12

Set Up

헤더파일주석처리

13

Set Up

Crange의 DialogBox 주석처리

14

Class

Class

CApplication

CWorkbooks(CWorkbook)

CWorksheets(CWorksheet)

CRange

15

Class

CApplication

: 엑셀실행또는관리하기위한클래스

Member Function

BOOL CreateDispatch(LPCTSTR lpszProgID, COleException* pError = NULL);

void put_Visible(BOOL newValue)

void put_UserControl(BOOL newValue)

LPDISPATCH get_Workbooks()

ex) app.CreateDispatch(_T("Excel.Application"));

: 엑셀을실행.

: 워크북의정보를불러옴.

: 엑셀을가시화시켜줌.

: 유저가엑셀을제어할수있도록함.

16

Class

CWorkbooks & CWorkbook

: 엑셀파일을열거나저장할때사용하는클래스

Member Function

LPDISPATCH Add(VARIANT& Template)

[Cworkbooks]

[Cworkbook]

ex) book = books.Add (COleVariant((long)DISP_E_PARAMNOTFOUND,VT_ERROR));

book = books.Add(COleVariant(_T("test.xls")));

LPDISPATCH get_Worksheets()

: 엑셀파일을생성또는불러옴

: 워크시트정보를불러옴.

17

Class

CWorksheets & CWorksheet

: 엑셀워크북내에있는시트를다루는클래스.

Member Function

[Cworksheets]

[Cworksheet]

LPDISPATCH Add(VARIANT& Before, VARIANT& After, VARIANT& Count, VARIANT& Type)

ex) sheets.Add(covOptional,covOptional,COleVariant((long)5),covOptional);

LPDISPATCH get_Item(VARIANT& Index)

: 워크시트추가.

: 워크시트선택.

LPDISPATCH get_Range(VARIANT& Cell1, VARIANT& Cell2)

: 시트에서사용할범위지정.

ex) range = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1")));

range = sheet.get_Range(COleVariant(_T("A1")), COleVariant(_T("D1")));

18

Class

CRange

: 엑셀시트안에서이용할셀의사용범위를지정하는클래스(실질적인텍스트나데이터입력).

Member Function

ex) range = sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1")));

range.put_Value2(COleVariant(_T("First Name")));

: 해당하는범위에데이터입력.

void put_Value2(VARIANT& newValue)

LPDISPATCH get_Font()

: 폰트정보를불러옴.

void put_HorizontalAlignment(VARIANT& newValue), void put_VerticalAlignment(VARIANT& newValue)

: 해당하는셀의정렬을설정.

ex) range.put_HorizontalAlignment(COleVariant((short)-4108));

range.put_VerticalAlignment(COleVariant((short)-4108));

xlVAlignBottom = -4107,

xlVAlignCenter = -4108,

xlVAlignDistributed = -4117,

xlVAlignJustify = -4130,

xlVAlignTop = -4160

19

Class

CRange

: 엑셀시트안에서이용할셀의사용범위를지정하는클래스(실질적인텍스트나데이터입력).

Member Function

void put_Formula(VARIANT& newValue)

ex) range = sheet.get_Range(COleVariant(_T("D2")), COleVariant(_T("D6")));

range.put_Formula(COleVariant(_T("=RAND()*100000")));

: 해당하는범위에수식입력.

VARIANT AutoFit()

: 해당하는범위의자동간격정렬

LPDISPATCH get_EntireColumn()

: 해당하는범위의전체컬럼정보를얻음.

ex) range = sheet.get_Range(COleVariant(_T("A1")), COleVariant(_T("D1")));

cols = range.get_EntireColumn();

cols.AutoFit();

void put_NumberFormat(VARIANT& newValue)

: 해당하는범위에숫자표현형태설정.

ex) range.put_NumberFormat(COleVariant(_T("0.0")));

range.put_NumberFormat(COleVariant(_T("0.000")));

range.put_NumberFormat(COleVariant(_T(“$0.00")));

20

Demo

Q & A