程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi和Office程序開發

Delphi和Office程序開發

編輯:Delphi

1.引言

在利用Delphi開發應用程序的時候,通常我們要設計出很多各種格式的文檔、報表,經常要進行文件的創建、編輯及修改,雖然Delphi本身提供了很多設計報表的控件或方法,但是存在明顯的不足,比如中文輸入,數據格式的控制等操作起來比較麻煩。利用大家都很熟悉的Office工具結合開發,能夠很好的解決這方面的問題。以下就以Delphi為例詳細介紹怎麼利用Office完成各種文檔、報表的制作。

2.實現方法

利用Delphi和Office結合開發主要有以下三種方法:

(1) 通過Delphi的控件TOleContainer 將Office嵌入,這是最簡單的Ole嵌入,能夠直接將Office文檔調用,只需要使用ToleContainer.Run就可以將Office文檔直接啟動。且這樣啟動的Office文檔與Delphi程序是一個整體(從界面上看),但是它存在不可克服的缺點,即不能通過Delphi控制Office文檔,也就不能實現將靈活操縱Office的目的。

(2) 使用Delphi提供的Servers控件調用Office,使用Office的屬性,使用Delphi的Servers控件來操縱Office,在編程時Delphi能夠實現代碼提示,總體上看能夠較好的實現Delphi對Office的控制,但是還有一些Office的功能不能在Delphi中調用(比如自己編寫的VBA宏代碼)。且實現功能時本來在VBA代碼中可選擇參數在Delphi調用的時候必須添加,否則,連編譯都不能通過。這種方式啟動的Office與Delphi程序分屬兩個窗體。

  (3) 使用CreateOleObject將啟動Office,然後以Ole方式對Office進行控制。這種辦法是使用以CreateOleObjects方式調用Office,實際上還是Ole,但是這種方式能夠真正做到完全控制Office文件,能夠使用Office的所有屬性,包括自己編寫的VBA宏代碼。與Servers控件和Com技術相比,本方法能夠真正地使用Office的各種屬性,和在VBA中編寫自己的代碼基本一樣,可以缺省的代碼也不需要使用。

3.軟件實現

       3.1第一種方法:通過Delphi的控件TOleContainer 將Office嵌入,操作方法如下:

(1)    調用Delphi中System頁控件ToleContainer實現;

(2)    雙擊OleContainer,出現如下界面:
  
  (3)這時你可以進行選擇了,選擇“由文件創建”,選擇相應的文檔,及就簡單的實現了將Office
文檔調入的功能;如下圖:
  
  

  

3.2第二種方法:使用Delphi提供的Servers控件調用Office;它使得我們很容易地把Office中的應用程序(Word, Excel, PowerPoint, Outlook and Access等)當作一個com應用服務器進行控制,以Word為例,介紹其實現方法:

(1)    調用TwordDocument(建立Word文件對象)、TwordApplication(啟動Word並建立同Word的連接) 、TwordFont(設置Word文件的字體)、TwordParagraphFormat(設置Word文件中的段落格式)控件;

(2)    啟動Word,通過TWordApplication實現;

Try

Wordapplication.Connect;

Except

MessageDlg('Word may not be installed', mtError, [mbOk], 0);

Abort;

End;

                     (3)創建一個新的文件,通過TWordApplication實現;

                            Template := EmptyParam;  //表示不使用模板

NewTemplate := False;  //表示新建新建文檔的類型為文檔,

//添加新文檔

WordApplication.Documents.Add(Template, NewTemplate);                                       WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex));

//關閉拼音查找和語法查找,以便提高程序運行的效率

WordApplication.Options.CheckSpellingAsYouType := False;

WordApplication.Options.CheckGrammarAsYouType := False;

(3)    插入數據,通過TWordDocument實現;

//文本

WordDocument.Range.InsertAfter('Oracle數據庫'+ chr(#13));

//表格

WordDocument1.Tables.Add(WordDocument1.Range,rownum,colnum,template,newtemplate); //其中rownum是表格行數,colnum 是表格列數

//向表格中插入數據

WordDocument1.Tables.Item(1).Cell(1,1).Range.Text:='證書編號';

WordDocument1.Tables.Item(1).Cell(1,2).Range.Text:='身份證號碼'

(4)    格式的設置

WordFont.ConnectTo(WordDocument.Sentences.GetLast.Font);//設置某些文字

WordFont.ConnectTo(WordDocument.Paragraphs.GetLast.Font);//設置某段文字

WordFont.Bold:=1;

WordFont.Italic:=1;……………………

WordDocument1.PageSetup.HeaderDistance:=1.5; //設置頁邊距

WordDocument1.PageSetup.FooterDistance:=1.75;

//設置頁眉頁腳 

WordDocument1.ActiveWindow.ActivePane.View.SeekVIEw:=wdSeekCurrentPageFooter;                        WordDocument1.ActiveWindow.ActivePane.Selection.InsertAfter('第'+inttostr(wdFIEldNumPages)+'頁');

//讓頁腳向右靠齊

WordDocument1.ActiveWindow.ActivePane.Selection.ParagraphFormat.Alignment:=wdAlignParagraphRight;

…………………………

3.3第三種方法:使用CreateOleObject將啟動Office,然後以Ole方式對Office進行控制。以Excel表格為例(表格的格式可以是事先設定好的,也可以是自己自由定義的,這裡以事先設定好表格的格式為例),進行說明:

(1)       在Uses中添加Comobj類;

(2)       申請一個全局變量:FvExcel ,類型為Variant; 表示是Excel對象

(3)    定義一個函數用來啟動Excel,如定義function OpenExcel(strFileName : string) : Boolean;

Function Tform1. OpenExcel(strFileName : string) : Boolean;

begin

             Result := True;

             try

                    FvExcel := CreateOleObject('Excel.Application');

                    except

              Application.MessageBox('打開Excel失敗',PChar(Application.Title),MB_ICONERROR);

                      Result := False;

                    end;

                    FvExcel.Visible := True;

                    FvExcel.Caption := '';

                    FvExcel.WorkBooks.Open(strFileName); //打開工作簿

                    FvExcel.WorkSheets[1].Activate;  //設置第1個工作表為活動工作表

end;

(4)    向FvExcel中插入數據

FvExcel.cells[row,col].value:=’中國’;//row表示行,col表示列;

(5)    設置格式

fvExcel.rows[row].font.color:=clred; //設置某一行數據的顏色

fvExcel.ActiveSheet.PageSetup.LeftMargin:=1;//設置左頁邊距

fvExcel.ActiveSheet.PageSetup. RightMargin:=1;//設置右頁邊距

              fvExcel.ActiveSheet.PageSetup.Zoom:=100;//設置顯示比例

              fvExcel.ActiveSheet.PageSetup.PaperSize:= xlPaperA4;//設置打印紙張大

4.一些體會

       在程序設計過程中,我們很多時候要設置Office文檔、表格的格式,這時要用到很多屬性、方法和函數等,這些屬性、方法和函數一般是平時很少用到的,如果手上沒有VBA手冊,很難查找到這些東西,所以,比較好的方法是首先打開Office,事先做好你要設計的格式,通過Office中的宏記錄,然後打開Office中的Visual Basic編輯器,查看代碼就可以看到你的操作使用到的屬性、方法或者函數了。通常很多屬性、函數或者方法可以直接搬到Delphi程序中用,一部分也只要稍微修改,也可以在Delphi中使用了。

5.結束語

       通過Delphi可以很完美的和Office結合,設計出各種樣式的表格、文本以及幻燈片等。同時通過Delphi操作數據庫,把要求的數據插入Office適當的位置,通過Office本身的功能實現預覽、打印和保存,從而減少節約程序調試和定位調試的時間,簡化的編程的難度,減少了程序員的工作量。對於用戶來講,采用大家熟悉的Office,增加了系統可操作性。該思想已經在“職稱評審管理信息系統”中大量使用。


  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved