国产探花免费观看_亚洲丰满少妇自慰呻吟_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!");

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 册亨县| 隆安县| 青浦区| 漯河市| 布尔津县| 鄂托克旗| 金秀| 五常市| 新和县| 辛集市| 中方县| 鄂伦春自治旗| 长寿区| 瑞安市| 荔浦县| 仁寿县| 临高县| 韶关市| 孝义市| 石渠县| 集贤县| 孟村| 临朐县| 舒兰市| 大新县| 马尔康县| 锡林郭勒盟| 大连市| 商都县| 常州市| 上蔡县| 马龙县| 正安县| 浮梁县| 磐安县| 新化县| 南安市| 高安市| 丹凤县| 静海县| 贵定县|