如何引用Projects功能表Import Type Library功能產生的檔案裡的物件 |
尚未結案
|
a120803
初階會員 發表:61 回覆:66 積分:25 註冊:2003-03-12 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
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 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
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;i網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |