用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);
}
相关推荐
ccrun资料汇总100篇
殿堂级的C++ Builder研究网站(http://ccrun.com/)资料汇总,外加部分其他网站开发教程,共计100篇,都是很经典的文章。一篇篇辛辛苦苦地复制粘贴排版的,本想标价5分,但考虑BCB开发人员很少了,只标2分啦!
Visual C++基础 - 使用OLE/COM操作Excel类
将数据保存至Excel表格中,并操作对应的单元格,比如字体、颜色填充等操作。 详细描述了MFC添加EXCEL的接口以及操作
一个学习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
手把手教你设计热电偶信号采集电路:从运放选型到ADC配置全流程
本文详细解析了热电偶信号采集电路的设计全流程,重点涵盖从高精度运放选型、差分放大电路设计到ADC配置与软件处理的工程实践。针对热电偶输出的微弱毫伏级差分信号,文章深入探讨了如何克服噪声、实现冷端补偿,并提供了具体的器件选型建议与电路调试技巧,旨在帮助工程师构建稳定可靠的高精度温度测量系统。
十一、机器学习进阶知识:径向基神经网络(RBFNN)的实现(Python,附源码及数据集)
本文对径向基神经网络(RBFNN)的理论基础及建模步骤进行介绍,之后使用Python实现基于RBFNN的数据预测,通俗易懂,适合新手学习,附源码及实验数据集。
ole操作excel参考
1、对象的创建与关闭 ******************************* eole=CREATEOBJECT('Excel.application') && 创建Excel对象 eole.Workbooks.add && 添加新工作簿 eole.Worksheets(
copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统
下面给出一个完整示例代码,结合 DeepSeek‑R1 的技术方法,实现一个端到端的 VLA(视觉+语言行动)自动驾驶深度强化学习系统。.2f。
用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
iOS反编译-hook微信之艾特所有人
all。
扫地机器人全场景测试实战:从实验室到真实家庭的可靠性验证
本文深入探讨了扫地机器人从实验室到真实家庭的全场景测试方法,揭示了软硬件测试中的关键挑战。通过分析场景化测试的重要性,文章详细介绍了硬件耐久性、软件稳定性和环境适应性三大测试维度,并提供了真实家庭测试的实用方法论。消费者可重点关注清洁率、覆盖率等核心指标,同时了解测试工程师的私房建议,帮助选择更可靠的扫地机器人产品。
用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
R语言孟德尔随机化环境搭建:手把手教你搞定gwasvcf、gwasglue等包的安装报错(附本地安装包)
本文详细介绍了R语言中孟德尔随机化环境搭建的全流程,重点解决gwasvcf、gwasglue等包的安装报错问题。从依赖关系解析到GitHub访问配置,再到离线安装方案,手把手教你搭建完整的分析环境,特别适合生物信息学新手快速上手。
再谈BDE——轻松操纵EXCEL(一)
再谈BDE——轻松操纵EXCEL作者:董维春(CH)(请勿转载,我的作品没必要为你撰钱) 学习CB快十年了,对BDE再熟悉不过,更是比ADO还喜欢的一种连接数据库的手段,宝兰在Delphi7后基本放弃了对BDE的再修改,把更多的精力用在dbExpress数据连接工具的开发上, BDE到CB6上所使用的版本也就基本停止了更新(CB后来的几个版本我没有使用过,看宝兰把自己产品卖来卖去,
【学习系列】SAP RAP 8:行为定义-Authorization Control
本文介绍了SAP RAP中的授权控制实现方法,主要分为读取操作和修改操作两种场景。读取操作通过ABAP CDS的数据控制语言(DCL)实现,使用访问控制对象限制数据可见范围;修改操作则通过行为定义中的权限检查,包括全局授权、实例授权和预检查三种方式。文章详细说明了如何使用DCL创建访问控制规则,并通过实例演示了全局授权和实例授权的代码实现方法,以及预检查功能在数据更新前的权限验证。这些授权控制机制共同确保用户只能访问和操作其权限范围内的数据,有效保障系统安全性。
AUTOSAR-SOMEIP配置总结
导入arxml之后someip信号一般以“pduSomeIp”开头或者“SomeIp”开头。以某个pdu为例,设置项“Pdu Default Partition Ref”主要是根据模块设计,配置相应的Ecuc核分区。在导入arxml之后someip信号中有三个特殊的信号,形如“SdInstance”开头的信号,设置项“Pdu Default Partition Ref”主要是根据模块设计,配置相应的Ecuc核分区。“EcuC”模块主要关注“EcucPduCollection”中的“Pdus”下面的配置。
将ListView中的内容导出到Word和Excel(新)
将ListView中的内容导出到Word和Excel(新) 关键字:ListView,Excel,Word,导出,OLE,ccrun 作者:ccrun 更新:2005-10-13 浏览:17239 经常看到有网友发帖子询问如何将ListView中的内容导出到Excel或Word文档中,其实在BCB中用OLE技术来操作,并不复杂,大概是有的人懒的写吧,于是ccrun(老妖)花了
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
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
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报表...
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
【eclipse】打开Excel(.xls文件)时 OLE 异常 报错“无法创建内置编辑器 没有为您打开的文件类型注册OLE编辑器”
【eclipse】打开Excel(.xls文件)时 OLE 异常 报错“无法创建内置编辑器 没有为您打开的文件类型注册OLE编辑器”
一步一步地教你实现OLE读取EXCEL(一)
OLE实现EXCEL读取的动态链接库的具体步骤 1.环境搭建: 我们需要什么环境背景呢?我用的是VS2015 + Microsoft Excel 2015,这里强调一下OLE不能在WPS上进行,因为OLE需要调用微软的基础类库(MFC),所以我们需要用到Excel软件,如果您用的是WPS,请出门右转! 2.具体步骤: 2.1创建工程: 我们要实现一个可以实现excel读取的动态链接库,当
MFC中使用OLE/COM操作EXCEL的方法
使用OLE的方法操作EXCEL,首先计算机必须安装excel,这样才会有接口暴露出来。本次使用大神封装好的类。 excel作为OLE/COM库插件,定义好了各类交互接口,而且这些接口是跨语言的,可以导入这些接口,操作excel,本问主要实现excel的读写,所以需要_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range这几个接口。
ABAP:OLE输出Excel的demo
OLE输出Excel的demo
通过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
最全的OLE操作Excel的完整代码(2)
/*------------------------------------------------- //目前真正最全的OLE操作Excel的完整代码 //版本:2007.01.15.01 //C++Builder专家组www.3322ee.com原创文章 //转载请保留本版权信息,谢谢合作 -----------------------------------------------
5560



被折叠的 条评论
为什么被折叠?



