用OLE操作Excel(目前最全的资料) 作者: ccrun

OLE 操作集合 *&---------------------------------------------------------------------* *& OLE方式EXCEL操作通用程序 *&---------------------------------------------------------------------* *******************... 阅读详情

用OLE操作Excel(目前最全的资料)(04.2.19更新)
本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注.

要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp
#include "Comobj.hpp"

C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,应用人员可以很方便地进行调用。
设置对象属性:void        OlePropertySet(属性名,参数……);
获得对象属性:Variant    OlePropertyGet(属性名,参数……);
调用对象方法:1) Variant  OleFunction(函数名,参数……);
            2) void    OleProcedure(过程名,参数……);

在程序中可以用宏定义来节省时间:

#define  PG  OlePropertyGet
#define  PS  OlePropertySet
#define  FN  OleFunction
#define  PR  OleProcedure

举例:
ExcelApp.OlePropertyGet("workbooks").OleFunction("Add");
可写为
ExcelApp.PG("workbooks").FN("Add");

C++ Builder中使用OLE控制Excel2000,必须掌握Excel2000的自动化对象及Microsoft Word Visual Basic帮助文件中的关于Excel的对象、方法和属性。对象是一个Excel元素,属性是对象的一个特性或操作的一个方面,方法是对象可以进行的动作。
首先定义以下几个变量:
Variant ExcelApp,Workbook1,Sheet1,Range1;

1、Excel中常用的对象是:Application,Workbooks,Worksheets等。
 
  ★创建应用对象★
      Variant ExcelApp;
      ExcelApp = Variant::CreateObject ("Excel.Application");
      或者
      ExcelApp = CreateOleObject ("Excel.Application");

  ★创建工作簿对象★
      Variant WorkBook1;
      WorkBook1 = ExcelApp.PG("ActiveWorkBook");

  ★创建工作表对象★
      Variant Sheet1;
      Sheet1 = WorkBook1.PG("ActiveSheet");

  ★创建区域对象★
      Variant Range;
      Range = Sheet1.PG("Range","A1:A10");   
      或者使用
      Excel.Exec(PropertyGet("Range") < <"A1:C1").Exec(Procedure("Select"));

2、常用的属性操作:
 
  ★使Excel程序不可见★
      ExcelApp.PS("Visible", (Variant)false);
       
  ★新建EXCEL文件★
   
    ◎ 新建系统模板的工作簿
      ExcelApp.PG("workbooks").FN("Add")      //默认工作簿
      ExcelApp.PG("workbooks").FN("Add", 1)  //单工作表
      ExcelApp.PG("workbooks").FN("Add", 2)  //图表 
      ExcelApp.PG("workbooks").FN("Add", 3)  //宏表
      ExcelApp.PG("workbooks").FN("Add", 4)  //国际通用宏表
      ExcelApp.PG("workbooks").FN("Add", 5)  //与默认的相同
      ExcelApp.PG("workbooks").FN("Add", 6)  //工作簿且只有一个表
      或者使用ExcelApp的Exec方法
      Excel.Exec(PropertyGet("Workbooks")).Exec(Procedure("Add"));
    ◎ 新建自己创建的模板的工作簿
      ExcelApp.PG("workbooks").FN("Add", "C://Temp//result.xlt");
       
  ★打开工作簿★
      ExcelApp.PG("workbooks").FN("open", "路径名.xls") 
       
  ★保存工作簿★
      WorkBook1.FN("Save");            //保存工作簿
      WorkBook1.FN("SaveAs", "文件名");//工作簿保存为,路径注意用"//"
       
  ★退出EXCEL★
      ExcelApp.FN ("Quit");
      ExcelApp = Unassigned;
      或者
      ExcelApp.Exec(Procedure("Quit"));
       
  ★操作工作表★
   
    ◎ 选择选择工作表中第一个工作表
      Workbook1.PG("Sheets", 1).PR("Select");
      Sheet1 = Workbook1.PG("ActiveSheet");
   
    ◎ 重命名工作表
      Sheet1.PS("Name", "Sheet的新名字");
   
    ◎ 当前工作簿中的工作表总数
      int nSheetCount=Workbook1.PG("Sheets").PG("Count");     
       
  ★操作行和列★
 
    ◎ 获取当前工作表中有多少行和多少列:
      Sheet1.PG("UsedRange").PG("Columns").PG("Count"); //列数
      Sheet1.PG("UsedRange").PG("Rows").PG("Count");    //行数
   
    ◎ 设置列宽
      ExcelApp.PG("Columns", 1).PS("ColumnWidth", 22);
      或者
      Range = ExcelApp.PG("Cells", 1, 3);
      Range.PS("ColumnWidth", 22);     
   
    ◎ 设置行高
      ExcelApp.PG("Rows", 2).PS("RowHeight", 25);
      或者
      Range = ExcelApp.PG("Cells", 2, 1);       
      Range.PS("RowHeight", 25);   
   
    ◎ 在工作表最前面插入一行
      Sheet1.PG("Rows", 1).PR("Insert");       
   
    ◎ 删除一行
      ExcelApp.PG("Rows", 2).PR("Delete"); //将第2行删除
 
  ★操作单元格★
 
    ◎ 设置单元格字体
        Sheet1.PG("Cells", 1, 1).PG("Font").PS("Name", "隶书"); //字体
        Sheet1.PG("Cells", 2, 3).PG("Font").PS("size", 28);    //大小
       
    ◎ 设置所选区域字体
      Range.PG("Cells").PG("Font").PS("Size", 28);
      Range.PG("Cells").PG("Font").PS("Color", RGB(0, 0, 255));
      其中参数的设置:
      Font  Name : "隶书"              //字体名称
              Size : 12                  //字体大小
            Color : RGB(*,*,*)          //颜色
        Underline : true/false          //下划线
            Italic: true/false          //斜体
   
    ◎ 设置单元格格式为小数百分比
      Sheet1.PG("Cells", 1, 1).PS("NumberFormatLocal", "0.00%");

    ◎ 设定单元格的垂直对齐方式
      Range = ExcelApp.PG("Cells", 3, 4);
      // 1=靠上 2=居中 3=靠下对齐 4=两端对齐 5=分散对齐
      Range.PS("VerticalAlignment", 2);     
   
    ◎ 设定单元格的文本为自动换行
      Range = ExcelApp.PG("Cells", 3, 4);
      Range.PS("WrapText", true);
     
  ★单元格的合并★

    ◎ Range = Sheet1.PG("Range", "A1:A2");          //A1和A2单元格合并
      String strRange = "A" + IntToStr(j) + ":" + "C" + IntToStr(j); //比如:A1:C5
      Range1=Sheet1.PG("Range", strRange.c_str()); //可以用变量控制单元格合并
      Range1.FN("Merge", false);
       
  ★读写单元格★

    ◎ 指定单元格赋值
      String strValue = "abcdefg";
      Sheet1.PG("Cells", 3, 6).PS("Value", strValue.c_str());
      Sheet1.PG("Cells", j, 1).PS("Value", "总记录:" + String(j-6));
      或者使用
      Excel.Exec(PropertyGet("Cells") < <1 < <3).Exec(PropertySet("Value") < <15);

    ◎ 所选区域单元格赋值
      Range.PG("Cells").PS("Value", 10);   

    ◎ 所选区域行赋值
      Range.PG("Rows",1).PS("Value", 1234); 

    ◎ 工作表列赋值
      Sheet1.PG("Columns",1).PS("Value", 1234);

    ◎ 读取取值语句:
      String strValue = Sheet1.PG("Cells", 3, 5).PG("Value");

  ★窗口属性★
   
    ◎ 显示属性
      ExcelApp.PS("Windowstate", 3);      //最大化显示
              1---------xlNormal            //正常显示
              2---------xlMinimized        //最小化显示
              3---------xlMaximized        //最大化显示

    ◎ 状态栏属性
      ExcelApp.PS("StatusBar", "您好,请您稍等。正在查询!");
      ExcelApp.PS("StatusBar", false);    //还原成默认值

    ◎ 标题属性:
      ExcelApp.PS("Caption", "查询系统");
     
3、操作图表
   
  ★添加图表
   
    Variant Chart; 
    Chart = ExcelApp.Exec(PropertyGet("Charts")).Exec(Function("Add"));
    ExcelApp.Exec(PropertySet("Visible") < < true);
    Chart.Exec(PropertySet("Type") < < -4100);
 
  ★滚动图表
 
    for(int nRotate=5; nRotate <= 180; nRotate += 5)
    {
          Chart.Exec(PropertySet("Rotation") < < nRotate);
    }
    for (int nRotate = 175; nRotate >= 0; nRotate -= 5)
    {
          Chart.Exec(PropertySet("Rotation") < < nRotate);
    }
   
另外,为保证程序能正常运行,需要在程序中判断目标机器是否安装了Office;
try
{
    ExcelApp = Variant::CreateObject ("Excel.Application");
}
catch(...)
{
    ShowMessage("运行Excel出错,请确认安装了Office");
    return;
}


#include "comobj.hpp"
//---------------------------------------------------------------------------
// 对指定Excel文件中的指定列进行排序
// strExcelFileName : excel文件名
// nCol : 指定的列号
// nSortStyle : 1:升序,2:降序
void SortExcelColumn(String strExcelFileName, int nCol, int nSortStyle)
{
    Variant vExcelApp, vWorkbook, vRange;
    vExcelApp = Variant::CreateObject("Excel.Application");
    vExcelApp.OlePropertySet("Visible", false);
    vExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open", strExcelFileName.c_str());
    vWorkbook = vExcelApp.OlePropertyGet("ActiveWorkbook");
    vExcelApp.OlePropertyGet("Columns", nCol).OleProcedure("Select");
    vExcelApp.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", 1, nCol).OleProcedure("Select");
    vRange =  vExcelApp.OlePropertyGet("Selection");
    vRange.Exec(Function("Sort") < <vExcelApp.OlePropertyGet("Selection") < <nSortStyle);
    vWorkbook.OleProcedure("Save");
    vWorkbook.OleProcedure("Close");
    vExcelApp.OleFunction("Quit");
    vWorkbook = Unassigned;
    vExcelApp = Unassigned;
    ShowMessage("ok");
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // 对C:/123/123.xls文件中第一个Sheet的第四列进行升序排序
    SortExcelColumn("C://123//123.xls", 4, 1);
}

c++输入坐标画散点图_Excel—图表绘制(散点图划分四象限) 2019excel版本元数据象限图画法没有现成的,需要人工制作。方法——高级一点,能让散点图变成以下有分布规律的颜色画法坐标:得到散点图-双击横坐标-坐标轴选项-纵坐标交叉-坐标轴值(中间数),同样双击纵坐标值:用if函数将数据分成四块,if(a2>12.5,if(b2>12.5,"a","b"),if(a2<12.5,if(b2<12.5,"c","d")))散点图屏幕顶... 阅读详情

相关推荐

ccrun资料汇总100篇

殿堂级的C++ Builder研究网站(http://ccrun.com/)资料汇总,外加部分其他网站开发教程,共计100篇,都是很经典的文章。一篇篇辛辛苦苦地复制粘贴排版的,本想标价5分,但考虑BCB开发人员很少了,只标2分啦!

Visual C++基础 - 使用OLE/COM操作Excel类

将数据保存至Excel表格中,并操作对应的单元格,比如字体、颜色填充等操作。 详细描述了MFC添加EXCEL的接口以及操作

qq_40896597的博客 5560

一个学习C++Builder的好网站

一个学习C++Builder的好网站http://www.ccrun.com/index.asp

OLE操作Excel

首先创建 Excel 对象,使用ComObj: var ExcelApp: Variant; ExcelApp := CreateOleObject( Excel.Application ); 1) 显示当前窗口: ExcelApp.Visible := True; 2) 更改 Excel 标题栏: ExcelApp.Caption := 应用程序调用 Microsoft Excel; 3

1090

手把手教你设计热电偶信号采集电路:从运放选型到ADC配置全流程

本文详细解析了热电偶信号采集电路的设计全流程,重点涵盖从高精度运放选型、差分放大电路设计到ADC配置与软件处理的工程实践。针对热电偶输出的微弱毫伏级差分信号,文章深入探讨了如何克服噪声、实现冷端补偿,并提供了具体的器件选型建议与电路调试技巧,旨在帮助工程师构建稳定可靠的高精度温度测量系统。

weixin_29169899的博客 416

十一、机器学习进阶知识:径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

本文对径向基神经网络(RBFNN)的理论基础及建模步骤进行介绍,之后使用Python实现基于RBFNN的数据预测,通俗易懂,适合新手学习,附源码及实验数据集。

weixin_42051846的博客 1万+

ole操作excel参考

1、对象的创建与关闭  ******************************* eole=CREATEOBJECT('Excel.application')                   && 创建Excel对象 eole.Workbooks.add                                       && 添加新工作簿 eole.Worksheets(

builderwfy的专栏 1528

copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统

下面给出一个完整示例代码,结合 DeepSeek‑R1 的技术方法,实现一个端到端的 VLA(视觉+语言行动)自动驾驶深度强化学习系统。.2f。

ywfwyht的博客 774

用OLE操作Excel(目前最全的资料)(作者: ccrun )

今天在写博客的时候,偶然发现老妖写的一篇关于用OLE操作Excel的文章,看了看觉得很不错,转载至此。 用OLE操作Excel(目前最全的资料)(04.2.19更新) 作者: ccrun ,如转载请保证本文档的完整性,并注明出处。欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.asp?id=529用OLE操作Excel(目前最全的资料)(04

樊亿的专栏 1121

iOS反编译-hook微信之艾特所有人

all。

2501_90243249的博客 759

扫地机器人全场景测试实战:从实验室到真实家庭的可靠性验证

本文深入探讨了扫地机器人从实验室到真实家庭的全场景测试方法,揭示了软硬件测试中的关键挑战。通过分析场景化测试的重要性,文章详细介绍了硬件耐久性、软件稳定性和环境适应性三大测试维度,并提供了真实家庭测试的实用方法论。消费者可重点关注清洁率、覆盖率等核心指标,同时了解测试工程师的私房建议,帮助选择更可靠的扫地机器人产品。

hhh00的博客 1076

用OLE操作Excel(目前最全的资料)(04.2.19更新) - ccrun(老妖)

用OLE操作Excel(目前最全的资料)(04.2.19更新) 作者: ccrun ,如转载请保证本文档的完整性,并注明出处。欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.asp?id=529用OLE操作Excel(目前最全的资料)(04.2.19更新)本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel

Victor's Blog 3004

R语言孟德尔随机化环境搭建:手把手教你搞定gwasvcf、gwasglue等包的安装报错(附本地安装包)

本文详细介绍了R语言中孟德尔随机化环境搭建的全流程,重点解决gwasvcf、gwasglue等包的安装报错问题。从依赖关系解析到GitHub访问配置,再到离线安装方案,手把手教你搭建完整的分析环境,特别适合生物信息学新手快速上手。

weixin_29093017的博客 215

再谈BDE——轻松操纵EXCEL(一)

再谈BDE——轻松操纵EXCEL作者:董维春(CH)(请勿转载,我的作品没必要为你撰钱) 学习CB快十年了,对BDE再熟悉不过,更是比ADO还喜欢的一种连接数据库的手段,宝兰在Delphi7后基本放弃了对BDE的再修改,把更多的精力用在dbExpress数据连接工具的开发上, BDE到CB6上所使用的版本也就基本停止了更新(CB后来的几个版本我没有使用过,看宝兰把自己产品卖来卖去,

ch_builder的专栏 2489

【学习系列】SAP RAP 8:行为定义-Authorization Control

本文介绍了SAP RAP中的授权控制实现方法,主要分为读取操作和修改操作两种场景。读取操作通过ABAP CDS的数据控制语言(DCL)实现,使用访问控制对象限制数据可见范围;修改操作则通过行为定义中的权限检查,包括全局授权、实例授权和预检查三种方式。文章详细说明了如何使用DCL创建访问控制规则,并通过实例演示了全局授权和实例授权的代码实现方法,以及预检查功能在数据更新前的权限验证。这些授权控制机制共同确保用户只能访问和操作其权限范围内的数据,有效保障系统安全性。

DeveloperMrMeng的博客 433

AUTOSAR-SOMEIP配置总结

导入arxml之后someip信号一般以“pduSomeIp”开头或者“SomeIp”开头。以某个pdu为例,设置项“Pdu Default Partition Ref”主要是根据模块设计,配置相应的Ecuc核分区。在导入arxml之后someip信号中有三个特殊的信号,形如“SdInstance”开头的信号,设置项“Pdu Default Partition Ref”主要是根据模块设计,配置相应的Ecuc核分区。“EcuC”模块主要关注“EcucPduCollection”中的“Pdus”下面的配置。

xiandang8023的博客 4651

将ListView中的内容导出到Word和Excel(新)

将ListView中的内容导出到Word和Excel(新) 关键字:ListView,Excel,Word,导出,OLE,ccrun 作者:ccrun    更新:2005-10-13    浏览:17239 经常看到有网友发帖子询问如何将ListView中的内容导出到Excel或Word文档中,其实在BCB中用OLE技术来操作,并不复杂,大概是有的人懒的写吧,于是ccrun(老妖)花了

请叫我小明 (坐标:西安) 729

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

将DBGrid中的数据导出到Word和Excel

将DBGrid中的数据导出到Word和Excel 关键字:DBGrid,Word,Excel,OLE,ccrun 作者:ccrun    更新:2005-10-13    浏览:21097 昨天ccrun刚写了将ListView中内容导出到Word文档和Excel文档的一篇文章,今天写程序凑巧用到了将DBGrid中数据导出到Office的功能,干脆再写个兄弟版的函数出来,DBGrid2W

请叫我小明 (坐标:西安) 597

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OLE 操作Excel 详解(转)

摘自http://blog.chinaunix.net/u2/62750/showa…使用Excel模板进行报表的开发.今年搞的Excel比较多,总结了一下,相信常用的操作包含的差不多了。可以首先定义一个无内容的Excel报表...

clli5589的博客 482

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【eclipse】打开Excel(.xls文件)时 OLE 异常 报错“无法创建内置编辑器 没有为您打开的文件类型注册OLE编辑器”

【eclipse】打开Excel(.xls文件)时 OLE 异常 报错“无法创建内置编辑器 没有为您打开的文件类型注册OLE编辑器”

Is_Barometer的博客 2443

一步一步地教你实现OLE读取EXCEL(一)

OLE实现EXCEL读取的动态链接库的具体步骤 1.环境搭建: 我们需要什么环境背景呢?我用的是VS2015 + Microsoft Excel 2015,这里强调一下OLE不能在WPS上进行,因为OLE需要调用微软的基础类库(MFC),所以我们需要用到Excel软件,如果您用的是WPS,请出门右转! 2.具体步骤: 2.1创建工程: 我们要实现一个可以实现excel读取的动态链接库,当

qq_35747066的博客 1万+

MFC中使用OLE/COM操作EXCEL的方法

使用OLE的方法操作EXCEL,首先计算机必须安装excel,这样才会有接口暴露出来。本次使用大神封装好的类。 excel作为OLE/COM库插件,定义好了各类交互接口,而且这些接口是跨语言的,可以导入这些接口,操作excel,本问主要实现excel的读写,所以需要_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range这几个接口。

Ezio 6458

ABAP:OLE输出Excel的demo

OLE输出Excel的demo

weixin_41886784的博客 1458

通过ole 操作Excel

 通过ole 操作Excel li_rtn = xl.ConnectToObject("c:/preview.xls", "Excel.Sheet" )IF  li_rtn = 0 Then  xlApp = xl.Application   xlApp.Visible = true //显示Excel,如果直接打印输出可设为false ll_workbooknum = xlapp.W

yishanhai的专栏 640

最全的OLE操作Excel的完整代码(2)

/*------------------------------------------------- //目前真正最全的OLE操作Excel的完整代码 //版本:2007.01.15.01 //C++Builder专家组www.3322ee.com原创文章 //转载请保留本版权信息,谢谢合作 -----------------------------------------------

yedezhanghao的专栏 7039
上一篇: 在windows右键菜单中加入自己的程序
下一篇: 佳能LBP5200激光打印机如何更换墨粉盒
marklr
博客等级 码龄19年 52粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值