分享
 
 
 

用OLE操作Excel(Wangda补充)

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

我也曾经在CSDN上写过BCB调用Excel的文章。思想和站长的《用OLE操作Excel(C++ Builder版)》如出一辙。

假如我们用2K的操作系统,可以发现假如只是用ExcelApp.PR("Quit")后,Excel线程还在,这样,假如应用程序不退出,被调用的EXCEL文件就无法在SHELL下用EXCEL打开。因此,我的BCB调用EXCEL是这样的在最后要加上一点工作,就是把所有的VARIANT变量都要设置为UNASSIGNED,我的一个小例子如下,新建立一个EXCEL文件,显示有多少个表单(sheet),然后添一个表单并命名为test,然后给(1,2)单元赋值。最后删除一个sheet.

==============================================================================

h文件定义宏

#define OPG OlePropertyGet

#define OPS OlePropertySet

#define OFN OleFunction

#define OPR OleProcedure

#define PR Procedure

添加变量:

Variant Axl,Workbook,AxSheet,nms,bef,aft;

cpp函数

void __fastcall TForm1::Button1Click(TObject *Sender)

{

//赋值内容

AnsiString s="hello!";

//文件路径和保存名称

AnsiString filename=GetCurrentDir()+"\\test.xls";

//判定文件是否存在

if (FileExists(filename))

{

//询问是否删除

if (MessageDlg("文件已经存在,是否删除?",

mtWarning, TMsgDlgButtons() << mbOK<<mbCancel, 0)==mrOk)

DeleteFile(filename);

else

{ShowMessage("放弃操作");return;}

}

//建立excel连接

Axl= Variant::CreateObject("Excel.Application");

Axl.OPS("Visible",false);

Workbook= Axl.OPG("Workbooks");

//创建一个新的excel工作本(文件)

Workbook.Exec(PR("Add"));

Workbook=Axl.OPG("ActiveWorkbook");

//显示存在的sheet数目

int count=Workbook.OPG("sheets").OPG("count");

ShowMessage(IntToStr(count)+"个表");

//添加一个Sheet,命名为test

aft=Workbook.OPG("sheets",count);

Workbook.OPG("sheets").OPR("Add",bef.NoParam(),aft);

AxSheet=Workbook.OPG("ActiveSheet");

//Rename

AxSheet.OPS("Name","test");

//给单元1,2赋值

AxSheet.OPG("Cells")

.OPG("Item",(Variant)1,(Variant)2)

.OPS("Value",s.c_str());

// .Exec(PropertySet("Value")<< s.c_str());

//以上两种方式都可以

//选择第一张sheet

int sheetnum=1;

AxSheet=Workbook.OPG("sheets",sheetnum);

//选择名字为sheet2的表单

AnsiString shname="sheet2";

AxSheet=Workbook.OPG("sheets",shname.c_str());

//关闭警告提示

Workbook.OPG("Application").OPS("DisplayAlerts",false);

//删除选定表单

AxSheet.OFN("Delete");

//打开警告提示

Workbook.OPG("Application").OPS("DisplayAlerts",false);

//保存文件,两种方式都可以

//Workbook.Exec(PR("SaveAs")<<filename);

Workbook.OPR("SaveAs",filename.c_str());

//结束退出

Workbook.OPR("Close");

Axl.OFN("Quit");

//结束,假如没有如下代码,EXCEL线程直到应用程序退出才结束。

Axl=Unassigned;

Workbook=Unassigned;

AxSheet=Unassigned;

bef=Unassigned;

aft=Unassigned;

nms=Unassigned;

ShowMessage("Well Done boy!");

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有