• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 怎样在ATLCOM程序中通过Excel::application获得当前打开的excel文档中的内容

怎样在ATLCOM程序中通过Excel::application获得当前打开的excel文档中的内容

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 怎样在ATLCOM程序中通过Excel::application获得当前打开的excel文档中的内容等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 怎样在ATL COM程序中通过Excel::application获得当前打开的excel文档中的内容
描述:

怎样在ATL COM程序中通过Excel::application获得当前打开的excel文档中的内容?紧急!!


解决方案1:

以前有人提到过用 ODBC 来读,他还举了个例子,比如:
某个电子表格的部分内容:
A       B       C
1 Stage DirCode CubeName
2 1 00001 XX总量分析
3 1 00002 XXXX客户分析
4 1 00003 YY客户分析
5 1 00004 ZZ客户分析 
6 1 00005 AAAAA分析
7 2 00006 BBBBB分析
8 2 00007 CCCCC分析
9 1 00008 DDDDD分析
10 1 10001 EEEEE分析
你要在excel的“插入”菜单项下选择“名称”,增加你想读入的数据:
名称(Name)            单元格(Range)
-----------------------------------
Stage                 sheet1!A2:A10
DirCode               sheet1!B2:B10
CubeName              sheet1!C2:C10
这样一来,VC就可以读到Excel文档了,需要说明的是:通过这个方法,VC是将每个名称单独作为一个表来处理的。
但是我通常不大喜欢 ODBC 所以,也没试,如果你感兴趣不妨试试。

解决方案2:

用MFC插入Excel工作表实现自动化
eNet学院 
 这篇文章讲述了如何使用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. 
********************************************************************/ 
void CEmbed_ExcelView::EmbedAutomateExcel() 
{ 
//Change the cursor so the user knows something exciting is going 
//on. 
BeginWaitCursor(); 
CEmbed_ExcelCntrItem* pItem = NULL; 
TRY 
{ 
//Get the document associated with this view, and be sure it’s 
//valid. 
CEmbed_ExcelDoc* pDoc = GetDocument(); 
ASSERT_VALID(pDoc); 
//Create a new item associated with this document, and be sure 
//it’s valid. 
pItem = new CEmbed_ExcelCntrItem(pDoc); 
ASSERT_VALID(pItem); 
// Get Class ID for Excel sheet. 
// This is used in creation. 
CLSID clsid; 
if(FAILED(::CLSIDFromProgID(L"Excel.sheet",&clsid))) 
//Any exception will do. We just need to break out of the 
//TRY statement. 
AfxThrowMemoryException(); 
// Create the Excel embedded item. 
if(!pItem->CreateNewItem(clsid)) 
//Any exception will do. We just need 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 调用dos程序的一个问题
  • 2017-06-05 ocx加载在JSP页面GetSafeHwnd为空
  • 2017-06-04 如何在程序中判断Word中是否存在宏呢?
  • 2017-06-04 请问高手:关于service
  • 2017-06-04 问一个比较基础的问题,关于MTS
  • 2017-06-05 VisualFC安装后为什么在VS2010中工具栏中点击没反应???
  • 2017-06-04 关于类型库中定义接口别名的问题
  • 2017-06-05 CreateProcess在对话框程序的不同函数中出现不同结果,诡异~~
  • 2017-06-05 关于伪COM接口的原理及使用方法
  • 2017-06-04 VC串口编程MSComm无法接收数据

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • MFCActiveX实现网页打印
    • 如何用com创建文件,并可以进行调用,最好有源码?
    • MicrosoftForms20label控件的SetPicture如何使用
    • 大家好,ATL是什么?学习COM组件开发有用吗?
    • 怎样将进程ID转换成进程的句柄!
    • 在线程中,调用自定义消息,如何利用WPARAMwParam,LPARAMlParam给消息传递参数?
    • Gdi图像控件,请高手指教!!!
    • 帮帮忙,如何生成(或取得)regsvr32exe程序
    • vc怎么做dll啊
    • Teechart初次应用遇到的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有