線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1431
推到 Plurk!
推到 Facebook!

如何引用Projects功能表Import Type Library功能產生的檔案裡的物件

尚未結案
a120803
初階會員


發表:61
回覆:66
積分:25
註冊:2003-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-09 15:19:40 IP:163.25.xxx.xxx 未訂閱
請問各位大大:    如何引用Projects功能表Import Type Library功能產生的檔案裡的物件    例如下列程式用引用Excel的type library來改寫 Variant a; a=CreateOleObject("Excel.Application"); a.Exec(Propertyset("Visible")<
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-09 16:02:11 IP:61.218.xxx.xxx 未訂閱
Import Type Library功能只是讓你引用ActiveX元件來使用, Call Excel功能只要使用OLE就可以了不需要Import ActiveX    記得加上    #include < vcl/utilcls.h > 這一行喔!

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant vMSExcel,vXLWorkbook, vXLWorkbooks;    //open
vMSExcel = Variant::CreateObject("Excel.Application");
vMSExcel.OlePropertySet("Visible", true);    //connect     vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
vXLWorkbook = vXLWorkbooks.OleFunction("Add");    try {
      vMSExcel = Variant::GetActiveObject("Excel.Application");
    }
    catch (...){
      vMSExcel = Variant::CreateObject("Excel.Application");
    }
//vMSExcel.OleFunction("Quit");<---如果開啟EXCEL後要關閉Excel應用程式請加上這行
vMSExcel = Unassigned;
}
//---------------------------------------------------------------------------
聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2003/04/09 17:34:01
a120803
初階會員


發表:61
回覆:66
積分:25
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-09 18:21:12 IP:163.25.xxx.xxx 未訂閱
謝謝axsoft大大: 但是用OLE Server寫起來不太簡潔ㄝ,因為要加上OleProcedure之類的函數來呼叫,我希望叫用type library來呼叫物件寫成類似以下程式,就是直接呼叫物件的屬性和方法,而不用OLE Server來呼叫 Application->Visible=true;
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-10 10:05:51 IP:61.218.xxx.xxx 未訂閱
a120803 您好:   1.如果您不喜歡用OLE如果您的C++ Builder是6.0的可以用Office2k的相關元件使用(BCB6內建的元件) 2.可以使用其他第三方元件    3.可以使用下面文章的方法:    
如何利用C   Builder 4.0 Enterprise實現對Excel97 的調用    (作者:孫航東 2000年08月02日 11:25)    http://www.ccidnet.com/tech/guide/2000/08/02/58_1034.html         我們在進行數據庫軟件的開發時,一般都要進行大量的報表設計,雖然我們可以利用Crystal Report 或程序自帶的報表工具進行報表設計,但是當涉及到要設計多重報表或交叉報表時、我們一般都會感到自己力不從心。有時雖然想利用Excel作為前台報表,但卻找不到相關接口只能作罷。其實我們只要知道Excel的接口結構,就能夠方便的實現對Excel的調用。       原理:在Excel 中程序接口一般分為3層 ,分別為:ExelApplication、Excelbook、Excelsheet 其中ExelApplication代表Excel程序,Excelbook代表Excel程序當前的工作本,Excelsheet代表Excelbook當前激活的表格,因此在啟動Excel程序時要按此序分別啟動,這樣就能實現對Excel報表的操作。       現舉例為例介紹如下:       一、在Import Type Library中加入 Excel8.olb,在\include 子目錄下生成Excel_TLB.h文件.       二、在BCB4.0中Form1中添加Button1、Button2、Button3、Table1,並存盤為Project1。       三、在Unit1.h中加入頭文件 #include "..\Excel_tlb.h"            在Private中加入        Private:          TCOM_Application Application;   file://定義ExcelApplication對像//         WorksheetPtr  Worksheet;        // 定義ExcelSheet對像//         RangePtr   FirstCol ;           file://定義列對像//         RangePtr   Range             file://定義表格操作範圍//              四、在Button1的OnClikc事件中添加如下代碼:         void __fastcall TForm1::Button1Click(TObject *Sender)     {//啟動Excel//        const int xlWBatChart = -4109;     const int xlWBatWorksheet = -4167;       if (! Application)       Application = CoApplication_::Create(); file://建立於Excel程序的連接//     Application->set_Visible(0, true);//打開Excel程序//     Application->Workbooks->Add(xlWBATWorksheet);//創建只含有一個ExcelSheet的ExcelBook//     Worksheet = Application->Workbooks->get_Item(1)->Worksheets->get_Item(1);//取得該表對像//     Worksheet->Name = WideString("database Date");//建立該表的名稱//     }              五、在Button2的OnClikc事件中添加如下代碼:     void __fastcall TForm1::Button2Click(TObject *Sender)     {//添加數據//     int i, j;        Table1->DatabaseName="DBDEMOS";        Table1->TableName="Author.db";       Table1->Open( );       for( i=0;iFieldCount;i  )     Worksheet->Cells->set__Default(1,i,Table1->Fileds->Fileds[i]->FiledName);//在指定的位置加入字段名//     Table1->First();     j=2;     while( !Table1->Eof( ))     {     for( i=0;iFieldCount;i  )     Worksheet->Cells->set__Default(j,i, Table1->Fields->Fileds[i]->AsString);////在指定的位置加入數據庫的內容//     Table1->Next( );     j  ;     }           }         六、在Button3的OnClikc事件中添加如下代碼:     void __fastcall TForm1::Button3Click(TObject *Sender)     {//表格設置//       Range = m_Worksheet->get_Range("C1:F20");//設置表格操作範圍//       Range->Font->size=12;//設置字體大小//       Range->Columns->Interior->ColorIndex = 3;//設置表格表格顏色//       Range->Borders->LineStyle = xlContinuous;//設置表格邊框//       FirstCol = m_Worksheet->Columns->get__Default(3 );//取得當前表格的第三列對像//       FirstCol->ColumnWidth = 25;       // 設置對像寬度//       FirstCol->Font->Bold = true;        // 設置字體屬性為加粗//       FirstCol->Font->Italic = true;       file://設置字體的種類//       FirstCol->Font->Color = clBlue;     // 設置字體的顏色//     }        以上程序在C   Builder 4.0 Enterprise   Pwin98中實現。        通過以上程序可以看出,只要我們在程序中對Excel進行巧妙的設置,就能夠設計出具有專業水平的報表。  
聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
系統時間:2024-04-29 20:57:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!