用C++Builder操纵Excel
赵天平Microsoft Excel作为一个功能强大的电子表格处理软件,已经得到了广泛的应用。在数据库应用软件开发过程中,如果能实现数据库与Excel文件的数据交换,那么一方面能增加数据库数据的来源,另一方面也能方便用户对数据库数据的进一步处理。
C++ Builder是一个可视化快速应用程序开发工具,它提供的OLE Automation机制使得开发人员在应用程序中就能调用Excel,实现数据交换。
在C++ Builder中调用Excel,首先要为Excel建立一个OLE对象,然后通过设定该对象的属性和调用该对象的方法来操纵Excel。C++ Builder通过CreateOleObject()来建立OLE对象;用OlePropertySet(propname,value)来设置OLE对象的属性;用OlePropertyGet(propname)获得OLE对象的属性;通过OleFunction(oleFuncName,[val,...])和OleProcedure(oleProcName,[val,...])来调用OLE对象的方法。
C++ Builder中使用OLE自动化操纵Excel,必须掌握Excel的自动化对象及VBA关于Excel的对象方法和属性,这些都在Microsoft Office(完全安装)的VBAXL8.HLP帮助文件中可以找到,在此就不再赘述。下面以将数据库中的数据转到Excel工作薄中为例,说明C++ Builder操纵Excel的具体方法。
首先新建一个表单Form1,保存单元文件Unit1.cpp,保存工程文件Project1.bpr。然后在表单中加入数据访问控件TTable,将Name属性设为Table1,DatabaseName属性设为BCDEMOS,TableName属性设为Country.db。在表单中加入一个按钮控件TButton,将其Name属性设为Button1,Caption属性设为 “转换为Excel文件”。双击Button1,在Button1Click()函数中加入如下代码:
Variant ex,newxls;
int i,j=1;
try
{
ex=CreateOleObject(″Excel.Application″); //启动Excel
}
catch(...)
{
ShowMessage(″无法启动Excel″);
}
ex.OlePropertySet(″Visible″,(Variant)true); //使Excel启动后可见
newxls=(ex.OleFunction(″Workbooks″)).OleFunction(″Add″);//新建一个工作薄
Table1-〉Active=true;
//打开数据库
Table1-〉First();
for(i=0;i〈Table1-〉FieldCount;i++)
//将字段名写到工作薄的第一行
{
(ex.OleFunction(″Cells″)).OlePropertySet(″Item″,(Variant)1,(Variant)(i+1),(Variant)Table1-〉Fields-〉FieldName);
}
while(!Table1-〉Eof)
//将数据库中的记录依次写到工作薄中
{
j=j+1;
for(i=0;i〈Table1-〉FieldCount;i++)
{
(ex.OleFunction(″Cells″)).OlePropertySet(″Item″,(Variant)j,(Variant)(i+1),
(Variant)Table1-〉Fields-〉AsString);
}
Table1-〉Next();
}
newxls.OleFunction(″SaveAs″,(Variant)filename);
//保存工作薄,filename是工作薄的全文件名
ex.OleFunction(″Quit″);
//退出Excel,释放OLE对象
注意,要使用OLE自动化对象,在编译之前还必须在Unit1.cpp文件前面加上#include ″ComObj.hpp″。
运行程序就可以实现将数据库中的数据转换到Excel工作薄中。同样的道理,使用OlePropertyGet()函数,也可以将Excel工作薄中的数据读到数据库中去。
以上代码在Windows 98操作系统、C++ Builder 3.0下调试运行通过。
最热门文章推荐:
>· ps外挂滤镜下载
>· 照片滤镜
>· 滤镜效果
>· photoshop的滤镜
>· premiere滤镜
>· fireworks实例教程
>· 颜色代码
>· qq空间播放器代码
下一篇:用BCB编程实现挂断拨号网络功能
↓相关文章:
- · 用BCB编程实现挂断拨号网络功能
- · WINDOWS下的动态鼠标光标控制
- · 用C++ Builder为计算机增加启动日志
- · 用C++ Builder实现图像的特技显示
- · 用WinSock控件编写网络聊天器
- · 用游戏操纵杆摸拟鼠标
- · 使用C++Builder在WIN2000环境下编制Service
- · 在C++Builder窗口中播放Flash
- · 用C++Builder6制作Apache动态服务页
- · 用C++ Builder创建基于Internet的点对点Chat
- · 程序开始时先显示信息框
- · 简单的用户密码管理系统
- · 个性凸现的动画特技效果
- · C++ Builder操纵多媒体数据库
- · AIX捉虫记之__invscoutd
- · 清华的信息安全考题,感兴趣的可以一起做
- · 投砖引玉 话主机安全
- · 入侵检测实战之全面问答
- · [原创]nessus安装指南!
- · OWASP Top Ten - International versions released
- · 谁给介绍一下硬件网络安全产品
- · 上网故障----终结者
- · 3721病毒杀除方法详解
- · zt-------联合反击DDOS
- · ★UNIX下的缓冲区溢出防御体系[原创]
- · tcp-ip 三卷
- · 【原创】推荐一个入侵测系统+主动防火墙-->Snort+Guardian
- · 如何突破各种防火墙的防护
- · 关于ddos攻击之syn flood 的防护技术简略分析
- · 请兄弟们推荐几本网络入侵/防护方面的好书
- · 简述网管员在日志分析中的五个误区
- · 一种新的穿透防火墙的数据传输技术(转贴)
- · 阻断攻击从接入交换机入手zz
- · 手把手教你选购防火墙(转帖)
- · Windows环境下通过MySQL以SYSTEM身份执行系统命令
- · PHP攻击专题[ZT]
- · DLL后门清除完全篇! [ZT]
- · JSP安全编程实例浅析 ZT
- · 十大绝招保护SQL Server数据库安全
- · 脚本攻击防范策略完全篇
- · QQ2004 sp1加密文件结构和加密算法分析
- · [原创] FreeBSD下构建安全的Web服务器
- · 关于传说中的拒绝服务攻击CC
- · 基于freebsd5.3下 PF synproxy的DDOS防范方案(转载+评论)
- · pix515防火墙配置策略实例
- · 限制P2P流量一例(原创)
- · ★Linux入侵检测脚本
- · AS/400系统安全
- · 入侵检测系统FAQ(全)
- · Windows命令使用大全(贡献给CU的兄弟)
- · win2000命令大全(这个似乎更全)
- · Xcon 2005精彩议题
- · FC4: Snort+mysql+Apache(with mod_ssl)+php+ACID安装日志
- · 中国客运列车旅客乘车情况问卷(A卷)
- · make up
- · sleep
- · 关于“四美图”被黑的推论之黑客帝国版.txt
- · 开会
- · 东方广场
- · 抱怨一下北京的天气
- · 虚拟的尽头是什么?
- · netscreen 204配置透明模式
- · Grid Computing
- · SOCKS Protocol Version 5工作原理
- · SOCKS 5协议详解
- · Socks Chains in Windows
- · 安全专家马丁看黑客
- · phpMyAdmin 2.6 傻瓜设置4步曲
- · 去除默认共享
- · 木马的检测、清除与防范
- · 停止不必要的Windows XP服务
- · 几个好的exploit代码站点
- · linux下连接肉机3389端口
- · 利用一个cgi漏洞攻克一台solaris 8
- · 入侵思路
- · The Twenty Most Critical Internet Security Vulnera
- · 好用的快捷键可节省时间
- · Help Defeat Denial of Service Attacks: Step-by-Ste
- · 数据加密服务
- · 开始我的CU博客

