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

BCB5中利用Servers群組元件實現對Word的操作

 
axsoft
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-16 18:33:47 IP:61.218.xxx.xxx 未訂閱

BCB5中利用Servers群組元件實現對Word的操作

作者不詳 資料來源:http://www.s8s8.net/cgi-bin/topic.cgi?forum=5&topic=1595&show=180 在C++Builder5的Components Palette中,有一項Servers頁,可以看到很多熟悉的控件圖標,這些就是Office組件的控件。C++Builder5中對應Office的組件包括了Word、Excel、Access、PowerPoint和Outlook可以說是十分的全面。不過要使用這些組件首先要保証你的系統中安裝了Office 97或以上的 版本。 下面首先來說一下Office組件的基本使用方法,C++Builder5中對于Office中不同的組件,首先要建立一個Application對象,例如要控制Word,首先要建立TWordApplication對象,然后再將諸如TWordDocument、TWordFont等Word對象通過ConnectTo方法連接到TWordApplication對象上。對于其它的Excel、Outlook等也是如此。 最近接觸了一個用戶的案例,用C++Builder5控制Word做一個調查問卷管理程序。有關人員先根據業務需要,寫好調查問卷的文字及定制好其輸出格式,但在客戶姓名、電話、調查內容等變化的位置填寫指定的標記字符串,然后通過C++Builder5把數據庫中的實際數據替換掉Word中的文字,最后讓Word打印出調查問卷。 下面通過具體的範例來說明在C++Builder5中,如何利用Servers組件實現對Word的控制。 首先建立一個新的工程,在form1中加入六個TButton對象、一個TMemo對象、一個TWordApplication對象、一個TWordDocument對象。下面是form1的代碼。
//打開已有的文檔模板
void __fastcall TPWordform::BtnOpenTemplateClick(TObject *Sender)
{
   try
   {
       try
       {
           WordApplication->Connect();
       }
       catch (Exception &exception)
       {
           MessageDlg("Word may not be installed", mtError, TMsgDlgButtons() << mbYes, 0);
           Abort;
       }
       WordApplication->Visible = True;
       WordApplication->Caption = StringToOleStr("Borland automation");           TVariant FileName;
       FileName = "e:\\tempmodel.doc";
       Word_2k::WordDocumentPtr prop;           prop =WordApplication->Documents->Open((TVariant*)&FileName);
       WordDocument->ConnectTo(prop);           WordApplication->Options->CheckSpellingAsYouType = False;  //關閉拼寫檢查
       WordApplication->Options->CheckGrammarAsYouType = False; //關閉語法檢查           btnCloseWord->Enabled = True;
       btnPrint->Enabled = True;
       btnPreview->Enabled = True;
   }
   catch (Exception &exception)
   {
       Application->ShowException(&exception);
       WordApplication->Disconnect();
   }    
}
//關閉Word
void __fastcall TPWordform::btnCloseWordClick(TObject *Sender)
{
   OleVariant SaveChanges = wdDoNotSaveChanges;
   OleVariant Originalformat = Unassigned;
   OleVariant RouteDocument = Unassigned;
   try
   {
       WordApplication->Quit(SaveChanges, Originalformat, RouteDocument);
       WordApplication->Disconnect();
       btnCloseWord->Enabled = FALSE;
       btnPrint->Enabled = FALSE;
       btnPreview->Enabled = FALSE;
   }
   catch (Exception &exception)
   {
       Application->ShowException(&exception);
       WordApplication->Disconnect();
   }
}    //打印
void __fastcall TPWordform::btnPrintClick(TObject *Sender)
{
   WordDocument->PrintOut();
}    //打印予覽
void __fastcall TPWordform::btnPreviewClick(TObject *Sender)
{
   WordDocument->PrintPreview();
}    //查找與替換
void __fastcall TPWordform::BtnReplaceClick(TObject *Sender)
{
   TVariant FindText,
            MatchCase,
            MatchWholeWord,
            MatchWildcards,
            MatchSoundsLike,
            MatchAllWordforms,
            Forward,
            Wrap,
            format,
            ReplaceWith,
            Replace,
            MatchKashida,
            MatchDiacritics,
            MatchAlefHamza,
            MatchControl;       FindText = "";
   MatchCase = false;
   MatchWholeWord = true;
   MatchWildcards = false;
   MatchSoundsLike = false;
   MatchAllWordforms = false;
   Forward = true;
   Wrap = wdFindContinue;
   format = false;
   ReplaceWith = "My Document";
   Replace = true;
   MatchKashida = false;
   MatchDiacritics = false;
   MatchAlefHamza = false;
   MatchControl = false;
   TOLEBOOL prop;
   prop=WordDocument->Content->Find->Execute((TVariant*)&FindText,    (TVariant*)&MatchCase,
(TVariant*)&MatchWholeWord,
              (TVariant*)&MatchWildcards, (TVariant*)&MatchSoundsLike,
              (TVariant*)&MatchAllWordforms, (TVariant*)&Forward,
              (TVariant*)&Wrap, (TVariant*)&format, (TVariant*)&ReplaceWith,
        (TVariant*)&Replace,(TVariant*)&MatchKashida,
(TVariant*)&MatchDiacritics,            (TVariant*)&MatchAlefHamza,
(TVariant*)&MatchControl);
}    //另存為
void __fastcall TPWordform::BtnSaveAsClick(TObject *Sender)
{
   TVariant FileName="temp.doc";
   WordDocument->SaveAs((TVariant*)&FileName);
}
//該程序在C++Builder5和Word2000下運行通過。 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2002/08/16 18:35:08
系統時間:2024-04-27 11:27:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!