在Visual C++ 中调用Excel 2000

使用c++开发excel插件 (第3章动态链接库(dynamic-link library)) 1、为什么要讲动态链接库,它和excel插件有什么关系。2、什么是动态链接库,它们都有哪几类。动态链接库和普通exe应用程序有什么区别。3、如何编写动态链接库。3.1、如何声明函数3.2、如何导出函数,导出类。3.3、编写一个简单的动态链接库4、如何调用动态链接库。5、如何调试动态链接库。6、查看动态链接库的内容。  1、 为什么我们要讲动态链接库 阅读详情

在Visual   C++   中调用Excel   2000   
    

    
  --------------------------------------------------------------------------------  
     
   
  在开发软件时,经常要将数据输出到Excel   2000中,在Excel   2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual   Basic中处理起来较简单,Excel   2000的VB编程帮助中有较为详细的介绍。在Visual   C++中如何进行处理了?利用Excel   2000的ActiveX   Automate功能,处理起来同VB中类似。但要注意以下几点:    
  对于对象的属性值的读取或赋值,需要用GetProperty()或SetProperty(NewValue)函数,不能象VB中直接通过属性名称取值或赋值。例如:Worksheet.GetCount(),   Worksheet.SetName(“Sheet1”)。    
  对集合对象中的成员对象的引用,必须使用集合对象的GetItem()函数。例如:Worksheets.GetItem(ColeVariant((long)1))或Worksheets.GetItem(ColeVariant(“Sheet1”))取得第一个工作表。    
  在COM接口中,时常用到Variant,BSTR,SafeArray数据类型。Variant数据类型是一个联合,可表示几乎所有的类型的数据,具体用法见MSDN中的相关介绍,类_variant_t是对VARIANT数据类型的封装。在Excel   2000的VB编程帮助中,如果提到某函数或属性需要一个值,该值的数据类型通常是Variant,在封装Excel   2000对象的类定义中,说明了具体需要的数据类型。BSTR是一个包括了字符串和字符串长度的数据结构,类_bstr_t是对BSTR数据类型的封装。在Excel   2000的VB编程帮助中提到的字符串通常指BSTR。具体函数参数或属性的数据类型,见封装该对象的类的定义。SafeArray是一个包括数组和数组边界的结构,数组边界外的内容不允许访问。在Excel   2000的VB编程帮助中提到的数组是指SafeArray。关于SafeArray的处理,请见MSDN的相关帮助。    
  对于缺省参数和缺省值。在VB中,函数的参数可以空缺,在VC++中不允许,必须将所有的参数填写完全。如果你希望指定某个参数为缺省值,根据参数数据类型的不同,可指定不同的缺省值。当参数数据类型为字符串时,可以用长度为0的字符串。如果参数是Variant类型,可用常量vtMissing,该常量在comdef.h中定义。也可用_variant_t(DISP_E_PARAMNOTFOUND,   VT_ERROR)产生一个Variant对象。    
  Excel对象中的集合对象有时包括的子对象是不一定的,例如:Range对象,可以表示Cell的集合,也可以表示Column的集合或Row的集合,Range.GetItem(1)可以返回Cell或Column或Row对象。    
  对对象的引用或传递对象,使用IDispatch类对象,有时利用Variant对IDispatch进行包装。    
  以下是一段源程序,演示如何启动Excel   2000,利用一个模板文件产生一个新文档,在该文档的”Sheet1”工作表的第一个单元中填写一段文字,设置第一列的列宽,然后调用一个模板中的宏,执行一段程序,最后打印预览该Excel文档。模板文件名称:MyTemplate.xlt。程序在Visual   C++   6.0   sp4,Windows   2000   Professional   sp-1下调试通过。    
  首先利用Visual   C++   6.0,建立一个MFC基于对话框的工程项目,共享DLL,Win32平台。工程名称ExcelTest。在主对话框中加入一个按钮,    
  ID   IDC_EXCELTEST    
  Caption   Test   Excel    
  双击该按钮,增加成员函数void   CExcelTestDlg::OnExceltest()。    
  在BOOL   CExcelTestApp::InitInstance()中,dlg.DoModal();之前增加代码:    
  if   (CoInitialize(NULL)!=0)    
  {    
  AfxMessageBox("初始化COM支持库失败!");    
  exit(1);    
  }    
  在return   FALSE;   语句前,加入:    
  CoUninitialize();    
  选择Menu->View->ClassWizade,打开ClassWizade窗口,选择Add   Class->From   a   type   library,选择D:/Program   Files/Microsoft   Office/office/Excel9.OLB(D:/Program   Files/Microsoft   Office/是本机上Microsoft   Office   2000的安装目录,可根据个人机器上的实际安装目录修改)。选择_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,加入新类,分别为_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,头文件Excel9.h,源文件Excel9.cpp。    
  在ExcelTestDlg.cpp文件的头部,#include   "ExcelTestDlg.h"语句之下,增加   :    
  #include   "comdef.h"    
  #include   "Excel9.h"    
  在void   CExcelTestDlg::OnExceltest()   函数中增加如下代码:    
  void   CExcelTestDlg::OnExceltest()      
  {    
  _Application   ExcelApp;    
  Workbooks   wbsMyBooks;    
  _Workbook   wbMyBook;    
  Worksheets   wssMysheets;    
  _Worksheet   wsMysheet;    
  Range   rgMyRge;    
  //创建Excel   2000服务器(启动Excel)    
     
  if   (!ExcelApp.CreateDispatch("Excel.Application",NULL))    
  {    
  AfxMessageBox("创建Excel服务失败!");    
  exit(1);    
  }    
  //利用模板文件建立新文档    
  wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);    
  wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("g://exceltest//MyTemplate.xlt")));    
  //得到Worksheets    
  wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);    
  //得到sheet1    
  wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);    
  //得到全部Cells,此时,rgMyRge是cells的集合    
  rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);    
  //设置1行1列的单元的值    
  rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This   Is   A   Excel   Test   Program!"));    
  //得到所有的列    
  rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);    
  //得到第一列    
  rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);    
  //设置列宽    
  rgMyRge.SetColumnWidth(_variant_t((long)200));    
  //调用模板中预先存放的宏    
  ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing,    
  vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,    
  vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,    
  vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,    
  vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);    
  //打印预览    
  wbMyBook.SetSaved(true);    
  ExcelApp.SetVisible(true);    
  wbMyBook.PrintPreview(_variant_t(false));    
  //释放对象    
  rgMyRge.ReleaseDispatch();    
  wsMysheet.ReleaseDispatch();    
  wssMysheets.ReleaseDispatch();    
  wbMyBook.ReleaseDispatch();    
  wbsMyBooks.ReleaseDispatch();    
  ExcelApp.ReleaseDispatch();    
  }    
  添加完以上程序后,可运行看结果。

使用Visual C++实现OLE剪贴板 使用Visual C++实现OLE剪贴板 南京市随园8-2号702室 王珂---- 一、概述 ---- 在Windows操作系统中存在两种剪贴板机制:Windows标准剪贴板和OLE剪贴板机制。 ---- 标准的Windows剪贴板是一个被所有Windows应用程序共享的系统服务,因此它并没有自己的句柄或类。但你可以通过CWnd类的成员函数来管理剪贴板。 ---- 自从OLE(Object Lin 阅读详情

相关推荐

STM32F103RC学习(一)

STM32F103RC学习(一)

Cat_South_North的博客 6055

C++ 操作Excel

预期实现结果: C++可对Excel表精确进行某一行某一列的增加、修改、删除、查询数据 预演环境: Window7+VS2013+office2013(32位)、2010(64位)、2007(64位)2003(64位)+WPS2016(位) 预演方法: 1、 ODBC方式访问 2、 通过解析Excel表格...

weixin_33739627的博客 2022

基于java实现的弹幕视频网站

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示弹幕视频网站,在弹幕视频网站可以查看首页、视频信息、商品信息、论坛信息、我的、跳转到后台、购物车、客服等内容前台首页界面图登录,通过登录填写账号、密码等信息进行登录操作登录界面图视频信息界面图。

DC5621的博客 1332

使用VC++操作Excel文件

<br />转载:http://xfrog.blogbus.com/logs/24923682.html本文档适用于:Microsoft Foundation Classes (MFC), Microsoft Visual C++, 32-bit Editions, version 6.0 以上 Microsoft OLE 库 第一步:建立一个自动化工程启动VC 6.0,打开新建对话框,新建一个MFC AppWizard(exe)工程,这里工程明设置为TestExcel。进入MFC 应用程序向导,选择 基本

Augusdi的专栏 1916

Qt Creator菜单栏消失的终极修复指南:从快捷键冲突到设置恢复

本文详细解析了Qt Creator菜单栏消失的常见原因及修复方法,包括快捷键冲突排查、配置文件重置和界面模式切换等解决方案。特别针对Qt开发者遇到的菜单栏显示问题,提供了从简单快捷键操作到深度配置修改的全方位指南,帮助用户快速恢复Qt Creator的正常使用。

weixin_27240351的博客 338

OpenSpec 从入门到精通:AI 时代的最佳 SDD 范式

同样都是「先写规范再写代码」的开源 SDD 框架,OpenSpec(https://github.com/fission-ai/openspec) 展现出了极高的工程性价比,无论是使用 Claude Code、Cursor 还是 Aider,都可以无缝接入 OpenSpec 的规格管理层。这些问题需要人来做判断,AI 做不了这个主。整个流程跑下来,OpenSpec 产出的效果还是令人满意的,一些前期没有考虑到的细节 AI 都补上了,生成的相关文档也有利于开发人员的知识对齐,可以尝试在团队内部推广。

qq_39093474的博客 925

C++ Excel操作的小函数

仅仅是插入行,修改背景颜色,加粗字体等,后续会再增加。 .................h BOOL insertrow( int IRow); //插入行 BOOL SetFontCloer(int irow); //填充颜色 .......cpp /*************************************************

gongjm46的专栏 1723

Microchip Studio 7.0 从零开始:下载、安装到首个AVR工程实战

本文为AVR单片机开发新手提供了Microchip Studio 7.0的完整入门指南。从官方下载、避坑安装,到创建首个GCC C工程、编写LED闪烁代码,再到项目配置、仿真调试与程序烧录,手把手带你完成从零到一的实战过程,是掌握AVR开发环境的必备教程。

weixin_29200741的博客 520

在Visual C++ 中调用Excel 2000

在开发软件时,经常要将数据输出到Excel 2000中,在Excel 2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual Basic中处理起来较简单,Excel 2000的VB编程帮助中有较为详细的介绍。在Visual C++中如何进行处理了?利用Excel

lzwxyz的专栏 1275

博通PEX89000 PCIe 5.0交换芯片:如何为AI集群构建高效GPU互联架构

本文深入解析了博通PEX89000 PCIe 5.0交换芯片如何为AI集群构建高效的GPU互联架构。该芯片通过提供高带宽、低延迟的PCIe 5.0交换能力,打破传统GPU通信的带宽瓶颈,并支持多主机共享、资源池化及软件定义拓扑,从而显著提升大规模AI训练与推理任务的效率与资源利用率。

weixin_29214559的博客 411

手把手教你学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模

本文介绍了使用Simulink进行压缩空气储能(CAES)系统热力学建模的详细步骤。系统模型包含压缩机、储气装置、膨胀机、热交换器和控制器等核心模块,通过MATLAB函数计算各部件参数,并设置仿真条件。文章详细说明了从模型创建到性能评估的完整流程,包括压缩/膨胀过程的能量转换、温度压力变化等关键指标分析。该建模方法可验证设计方案的有效性,并为系统优化提供参考,适用于新能源与储能领域的研究与应用。

MHD0815的博客 9173

EXCEL开发之Visual C++ 中调用Excel 2000[zz]

在开发软件时,经常要将数据输出到Excel 2000中,在Excel 2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual Basic中处理起来较简单,Excel 2000的VB编程帮助中有较为详细的介绍。在Visual C++中如何进行处理了?利用Excel 2000的ActiveX Automate功能,处理起来同VB中类似。但要注意以下几点: 对于对象的属性值的读取或赋值...

liu_kan的专栏 334

SAP Group Reporting入门指南(1)--开篇及系统环境搭建

文章介绍了SAP GR的发展历程、与BPC的对比优势,数据收集的多种方式(实时同步、外部导入等)以及合并整体流程,并推出《SAP Group Reporting入门指南》专栏。

bflyfish的博客 282

利用VC向EXCEL中写数据

在开发软件时,经常要将数据输出到Excel 2000中,在Excel 2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual Basic中处理起来较简单,Excel 2000的VB编程帮助中有较为详细的介绍。在Visual C++中如何进行处理了?利用Excel 2000的ActiveX Automate功能,处理起来同VB中类似。但要注意以下几点: 对于对象的属性值的读取或

524

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC6简单的运用EXCEL隐藏打印和打印预览

在开发软件时,经常要将数据输出到Excel2000中,在Excel2000中对该数据进行进一步地格式化处理或进行计算处理。在VisualBasic中处理起来较简单,Excel2000的VB编程帮助中有较为详细的介绍。在VisualC++中如何进行处理了?利用Excel2000的ActiveXAutomate功能,处理起来同VB中类似。但要注意以下几点: 对于对象的属性值的读取或赋值...

Hat_man_的博客 626

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

转贴:vc读写excel中的数据

原贴地址:http://topic.youkuaiyun.com/t/20021108/10/1158863.html详细内容如下,收藏学习。在开发软件时,经常要将数据输出到Excel 2000中,在Excel 2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual Basic中处理起来较简单,Excel 2000的VB编程帮助中有较为详细的介绍。在Visual C++中如何进行处理了?利用E

淡然 737

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql 备份表到sql server_SQL server中怎么只备份一张数据库表的数据

在Visual C++中如何进行处理了?利用Excel 2000的ActiveX Automate功能,处理起来同VB中类似。但要注意以下几点:对于对象的属性值的读取或赋值,需要用GetProperty()或SetProperty(NewValue)函数,不能象VB中直接通过属性名称取值或赋值。例如:Worksheet.GetCount(), Worksheet.SetName(“...

weixin_39924307的博客 126

Visual C++ Excel 2000/2003编程

在开发软件时,经常要将数据输出到Excel 2000中,在Excel 2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual Basic中处理起来较简单,Excel 2000的VB编程帮助中有较为详细的介绍。在Visual C++中如何进行处理了?利用Excel 2000的ActiveX Automate功能,处理起来同VB中类似。但要注意以下几点: 对于对象的属性值的读取或赋值,

Augusdi的专栏 2933

C++环境下读取excel表格,亲测可用

在VS2015环境中,个人对以下程序和步骤进行了测试,结果表明完全可以读取excel数据。 相关的完整程序可以在https://download.youkuaiyun.com/download/cxd3341/12683449中获取 以下为程序创建步骤: 1、新建MFC程序: 新建基于对话框的MFC程序: 单击完成,即完成基于MFC对话框的程序的创建。 2.添加读取excel数据的接口类: 添加读取excel的接口类: 3、添加完成后,找到这几个接口类的...

1万+

Excel.cpp和Excel.h

个人文件

huapro.vip的程序人生 2447

excel2000和VC

我用的是excel2000 首先利用Visual C++ 6.0,建立一个MFC基于对话框的工程项目,共享DLL,Win32平台。工程名称ExcelTest。在主对话框中加入一个按钮, ID IDC_EXCELTEST Caption Test Excel 双击该按钮,增加成员函数void CExcelTestDlg::OnExceltest()。 在BOOL CExcelTestApp::Ini

hnhbdss的专栏 1011
上一篇: javascript实现屏幕右下角消息提示框
下一篇: javaBean数据库连接池
cation
博客等级 码龄24年 33粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值