代码改变世界

MFC 操作excel

2016-04-25 13:57  sylar_liang  阅读(550)  评论(0编辑  收藏  举报

1.新建一个MFC工程,如对话框工程。

2.点击 项目--添加类-- MFC -- TypeLib中的MFC类,点击 "添加"

3.可用的类型裤中,找到 "Microsoft Excel 14.0 Object Library<1.7>" (不同版本的excel不同类型裤),接着添加以下9项:

1>_Application

2>_Chart

3>_Workbook

4>_Worksheet

5>Charts

6>Font

7>Range

8>Workbooks

9>WorkSheets

则会自动生成9个头文件,把头文件添加到 XXXDlg.cpp 中

#include "CApplication.h"

#include "CChart.h"

#include "CCharts.h"

#include "CFont0.h"

#include "CRange.h"

#include "CWorkbook.h"

#include "CWorkbooks.h"

#include "CWorksheet.h"

#include "CWroksheets.h"

尝试重新编译工程,此时弹出一堆的错误。

将以上9个.h中的

#import "xxx"

全部屏蔽掉即可。

 

4.在 工程 CXXXApp::InitInstance() 里添加对OLE的支持

if (!AfxOleInit())

{

  AfxMessageBox(_T("Can't Initialize COM dll!"));

  return FALSE;

}

 

5.重新编译工程,此时 CRange.h 的 DialogBox函数 会报错误,将 DialogBox 函数名 改为 _DialogBox 即可。

 

6.添加一个按钮Run,然后点击时启动Excel。函数如下

void XXXDlg::OnClickedRun()

{

  COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional(long)DISP_E_PARAMNOTFOUND, VT_ERROR);

  CApplication app;

  if ( !app.CreateDispatch(TEXT("Excel.Application")) )

  {

    AfxMessageBox(TEXT("Could not start Excel and get application object!"));

    return;

  }

  

  app.put_Visible(TRUE);

  app.pu_UserControl(TRUE);

}