我也曾经在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!");
分享到:
相关推荐
OLE 操作Excel的示例,可以在窗体中显示Excel图表。
最全的OLE操作Excel的完整代码
目前真正最全的OLE操作Excel的完整代码
在SWT中使用OLE操纵Excel入门培训文档,里面整理了很多资源,下载的请使劲戳
SAP ABAP OLE 操作EXCEL小结SAP ABAP OLE 操作EXCEL小结SAP ABAP OLE 操作EXCEL小结SAP ABAP OLE 操作EXCEL小结
BCB 调用EXCEL ...用OLE操作Excel(目前最全的资料)(04.2.19更新) 本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-->察看宏代码-->转为CB代码而来.本文档不断更新中.欢迎大家关注.
可以提供给大家参考的ole操作excel的文档,希望可以给大家提供帮助
ole去操作excel C#操作excel详解 直接上类,内有详细说明
摘要:Delphi源码,文件操作,OLE,Excel 一个基于Delphi语言编写的OLE自动化控件器,让Delphi支持打开.xls格式的Excel表格文件,简要概述一下实现步骤:建立OLE对象、使Excel可见,并将本程序最小化,以观察Excel的...
OLE生成Excel代码实例
自己编写的,OLE操作EXcel的类封装。另外还有个操作二进制文件的类封装。 希望对大家有帮助!
ABAP OLE开发EXCEL
VC通过ole方式操作excel,功能比较齐全。插入图片、数据导入导出、设置背景、 字体、合并单元格、设置边框、对齐方式等。此为exe文件,如果觉得可以,可索取源代码。
OLE 操作Excel的示例[ManipulatingExceldata.rar]-精品源代码
使用oledb读写excel出使用oledb读写excel出使用oledb读写excel出使用oledb读写excel出
从单个数据表根据第一列数据的不同,提取并保存成单个的txt文件。...其中涉及了OLE方式的xls文件打开,单个数据表选择,表格数据SafeArray方式读取,最后是保存成txt文本文件,数据是石油行业通用的井斜数据格式。
我们在程序中处理Office文档的时候,常用的方法是OLE...在此提供了一个不依赖于OLE的对Excel操作的类。经测试在各个版本的vc和Borland C++下都能使用。兼容windows 系列下office 97 到office 2007所有版本的Excel文档。
c++builder OLE操作word和excelOLE操作word和excel
c++builder用ole控制Excel
* 4、对注册表的操作,解决读取Excel表格数据位数的限制【OperateRegedit】。 * 5、删除磁盘上指定的文件【ClearExcelFile】。 * 6、根据传入的Datatable数据源,生成Excel数据表...