网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用MFC插入Excel工作表实现自动化
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

这篇文章讲述了如何使用MFC将Excel工作表插入到SDI视图中。文章包括插入工作表并将文字添加到A1单元格的详细步骤,每一步都有详细说明。 虽然你可以直接将代码插入到你的程序中,但理解这些例子你才会真正受益。


更多信息


以下是创建这个MFC应用程序的步骤:

1.使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"Embed_Excel"

2.选择单文档视图(SDI)结构,在第3步中需要选中Container,以提供容器支持。

其它都为默认。


产生以下类:


应用类: CEmbed_ExcelApp in Embed_Excel.h and Embed_Excel.cpp

框架类: CMainFrame in MainFrm.h and MainFrm.cpp

文档类: CEmbed_ExcelDoc in Embed_ExcelDoc.h and Embed_ExcelDoc.cpp

视图类: CEmbed_ExcelView in Embed_ExcelView.h and Embed_ExcelView.cpp

容器类: CEmbed_ExcelCntrItem in CntrItem.h and CntrItem.cpp


3.在VIEW菜单中,选ClassWizard,选Automation选项卡,选Add Class,选择From a TypeLibrary, 选中Microsoft Excel 97/2000 类型库:Excel8.olb或Excel9.olb(在Microsoft Office\Office目录下) 会将类型库中的所有类添加到你的工程中。



4.在CntrItem.h中为CEmbed_ExcelCntrItem类添加如下函数定义:




LPDISPATCH GetIDispatch();

5.然后在CntrItem.cpp中添加GetIDispatch方法


示例代码

-----------



/*******************************************************************

* This method returns the IDispatch* for the application linked to

* this container.

********************************************************************/

LPDISPATCH CEmbed_ExcelCntrItem::GetIDispatch()

{

//The this and m_lpObject pointers must be valid for this function

//to work correctly. The m_lpObject is the IUnknown pointer to

// this object.

ASSERT_VALID(this);

ASSERT(m_lpObject != NULL);


LPUNKNOWN lpUnk = m_lpObject;


//The embedded application must be running in order for the rest

//of the function to work.

Run();


//QI for the IOleLink interface of m_lpObject.

LPOLELINK lpOleLink = NULL;

if (m_lpObject->QueryInterface(IID_IOleLink,

(LPVOID FAR*)&lpOleLink) == NOERROR)

{

ASSERT(lpOleLink != NULL);

lpUnk = NULL;


//Retrieve the IUnknown interface to the linked application.

if (lpOleLink->GetBoundSource(&lpUnk) != NOERROR)

{

TRACE0("Warning: Link is not connected!\n");

lpOleLink->Release();

return NULL;

}

ASSERT(lpUnk != NULL);

}


//QI for the IDispatch interface of the linked application.

LPDISPATCH lpDispatch = NULL;

if (lpUnk->QueryInterface(IID_IDispatch, (LPVOID FAR*)&lpDispatch)

!=NOERROR)

{

TRACE0("Warning: does not support IDispatch!\n");

return NULL;

}


//After assuring ourselves it is valid, return the IDispatch

//interface to the caller.

ASSERT(lpDispatch != NULL);

return lpDispatch;

}

6.在Embed_ExcelView.h中为CEmbed_ExcelView类添加如下函数定义:



void EmbedAutomateExcel();

7.然后在Embed_ExcelView.cpp中添加EmbedAutomateExcel方法:



示例代码

-----------


/********************************************************************

* This method encapsulates the process of embedding an Excel

* Worksheet in a View object and automating that worksheet to add

* some text to cell A1.

***************************************************************
  • 下一篇资讯: 和GUI有关的各种对象
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号