BCB5中利用Servers群組元件實現對Word的操作 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
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 = "//該程序在C++Builder5和Word2000下運行通過。 網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2002/08/16 18:35:08 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |