程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 用OLE操作Excel(Wangda補充)

用OLE操作Excel(Wangda補充)

編輯:關於C++

我也曾經在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!");

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved