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

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

作者: ccrun ,如转载请保证本文档的完整性,并注明出处。
欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.asp?id=529
用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行删除

       // 本文作者:ccrun ,如转载请保证本文档的完整性,并注明出处。
       // 欢迎光临 C++ Builder 研究 www.ccrun.com
       // 摘自:http://www.ccrun.com/doc/go.asp?id=529
        
  ★操作单元格★
  
    ◎ 设置单元格字体
        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++Builder的好网站 一个学习C++Builder的好网站http://www.ccrun.com/index.asp 立即下载

相关推荐

海康读码器上位机开发避坑指南:IDMVS客户端之外,如何用C# SDK搞定扫码、数据比对与实时控制?

本文详细介绍了如何利用海康读码器的C# SDK进行二次开发,实现从基础扫码到复杂工业控制的全流程解决方案。内容涵盖SDK架构解析、多设备管理系统构建、业务逻辑与设备控制实现,以及系统集成与性能优化等关键环节,为工业自动化领域的开发者提供实用指南。

weixin_30642561的博客 550

在C++ Builder中用Ole控制Excel表

笔者在实际工作中经常用Excel表做数据报表,大多数表格的数据都要从数据库中读取,这样我就用C++Builder做了一个报表程序,方便了很多,现在把它共享给C++Builder爱好者们,就算为丰富C++Builder的文档资料做点事情吧。  首先把Excel报表文件保存到一个指定目录下,最好放在可执行程序的子目录下,作为模板文件。可以把报表标题、表头等设置好。这里是保存在trpt子目录下。  然后

键者天行 8141

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 650

关于BCB中,Excel的一些操作(存底)

将一个Excel或sheet的部分内容复制到另一个Excel或sheet,并设置边框 //---------------------------------------------------------------------------   void __fastcall TForm1::Button1Click(TObject *Sender) {    Var

enjoy0104的专栏 2470

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9371

Python内置函数zip()——《Python内置函数手册》Python老吕编著

zip()函数是 Python 中的一个内置函数,用于将多个可迭代对象(如列表、元组、字符串等)中对应的元素打包成一个个元组,然后返回由这些元组组成的迭代器。zip()函数常用于将多个序列并行迭代,或者用于数据对齐。zip()它返回一个迭代器,这意味着你可以逐个获取打包后的元素,而不是一次性将所有元素加载到内存中。如果输入的可迭代对象长度不一致,zip()会以最短的可迭代对象为准,只打包到最短对象的末尾。它可以用来并行迭代多个序列,使得代码更加简洁和高效。在接下来的章节中,我们将详细介绍。

Python老吕的博客 680

关于Excel的对象、方法和属性

 要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp  #include   "Comobj.hpp "  C++   Builder把Excel自动化对象的功能包装在下面的四个Ole   Object   Class函数中,应用人员可以很方便地进行调用。  设置对象属性:Variant           OlePropertySet(属性

hack_tian的博客 6314

rk3588调试imx415记录

分享适配imx415的软件配置以及一些关键的调试命令

m0_60805802的博客 2889

用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

华为OD机试双机位C卷-MVP争夺战 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【MVP争夺战】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - MVP争夺战,

qq_45776114的博客 1171

链接文件及功能安全:英飞凌官方文档摘录 - 基于Tasking与AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解

Data区域是用来存放带初始化值的全局变量,在link文件中,这个区域有两种类型,预先定义的区域和默认区域。预先定义的Data区域,例如.data.Ifx_Ssw_Tc1和.data.Cpu1_Main.*,在cpu1_main.c中如果定义了一个带初始化值的变量,则它会放在DSRAM1中的.data.Cpu1_Main.*段中。

梦想技术家 539

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

用OLE操作Excel(目前最全的资料)(04.2.19更新) 本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注. 要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp #include "Comobj.hpp" C++ Builder把Excel自动化对象的功能

ZENITH 1780

DA14531-蓝牙温度传感器-真实案例

传感器低功耗系统功能需求: 1)平时为关机状态,通过GPIO管脚唤醒,霍尔器件触发拉低IO唤醒系统。 2)唤醒后,进入BLE广播状态,等待主机连接,若一分钟无被主机连接,则进入关机状态。 3)连接后(0.1mA),每秒上报一次温度值,同时主机可以读取设备读电池电量。 4)连接断开后,1分钟后,设备进入关机(1uA)。 5)LED灯在连接时点亮,断开灭,低电量时会闪,提示闪烁。

hejinwu1314的博客 856

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

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

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

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

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

CB2010操作Word代码

编译环境:CB2010 ,win7 64位, Office 2007遇到的问题就是插入图片时,让它插到第2格,它总是插到第1格,没办法只好改表格的形式了 。 还有就是表格里面填写内容时 ,必须是下面这样做 :AnsiString content = Edit1->Text; vCell = vTable.OleFunction("Cell", 2, 2); vCell.OlePropertyS

◆麻酱面条◆ 578

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ole excel操作

Variant ex,wb,sheet,range; ex=CreateOleObject("Excel.Application");//创建应用对象 ex.OlePropertySet("Visible",true);//显示excel  ex.OlePropertyGet("Workbooks").OleProcedure("Add"); // 工作表  wb=ex.OleProper

kyfvc的专栏 1299

破解Access(*.mdb)目前所有版本的密码

破解Access(*.mdb)目前所有版本的密码 关于Access97的密码破解,在很多的网站和杂志上都有过介绍。在这里我简单重复一下。在mdb文件第0x42字节处的13个字节分别与0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13异或后即可得到数据库的密码。但在Access 2000和2002的

优快云 TERRYYRRET 的专栏 4593

BCB用OLE操作Excel(目前最全的资料)

本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注. 要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp #include "Comobj.hpp" C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Clas

lcfeng1982的专栏 9407

用OLE操作Excel资料

  要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp#include "Comobj.hpp"C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,应用人员可以很方便地进行调用。设置对象属性:void        OlePropertySet(属性名,参数……);获得对象属性:Var

Johnny的专栏 3455

C++Builder控制Excel

  #define       PG       OlePropertyGet     #define       PS       OlePropertySet     #define       FN       OleFunction     #define       PR       OleProcedure 要在应用程序中控制Excel2000的运行,首先必须在编制自动化客户程

miderph的专栏 2744

C++Builder存取Excel文件

 C++Builder是Borland公司继Delphi之后又一成功的产品,她集VB、VC++ 及 Delphi 的优点于一体而深得C语言爱好者的青睐。由于多数操作者爱用 MicroSoft公司的Excel组织数据,为此本文介绍了用C++Builder存取Excel 文件的两种方法。 ---- 一.用OLE技术操纵Excel ---- OLE(对象链接与嵌入)是微软提出的标准,是应用程序间交换数据

ZENITH 1280

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

最全的OLE操作Excel的完整代码(转载) - [技术文档] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://wsqj.blogbus.com/logs/32271364.html #include #include "Excel_2K_SRVR.h" //#include "ComObj.hpp" /*------------------

yedezhanghao的专栏 4437
上一篇: 好文章链接
下一篇: 将DBGrid里的数据导入EXCEL的
jvict
博客等级 码龄26年 2粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值