国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用OLE操作Excel(Wangda補充)

2019-11-17 05:29:44
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自治县| 连江县| 微博| 汉沽区| 新巴尔虎右旗| 白河县| 拉萨市| 桂阳县| 明水县| 隆安县| 怀安县| 瑞昌市| 珠海市| 子洲县| 富宁县| 台东县| 合肥市| 洞口县| 梁山县| 榆社县| 桐梓县| 扶余县| 孟连| 邵阳县| 古丈县| 莆田市| 吴川市| 黔西县| 丰顺县| 临朐县| 开封县| 射阳县| 永年县| 尚义县| 象州县| 嫩江县| 弋阳县| 海南省| 宣城市| 偃师市| 方山县|