黃雄波
摘要:在Delphi開發(fā)環(huán)境中.討論了Microsoft OWC(Office Web components)的spreadsheet控件數(shù)據(jù)導(dǎo)入問題。
關(guān)鍵詞:DdlphiSpreadsheet控件Excel工作表函數(shù)
中圖分類號TP311.11
文獻(xiàn)標(biāo)識碼B文章編號:1002-2422(2007)03-0022-03
本文在Delphi開發(fā)環(huán)境中將結(jié)合Microsoft OWC(Of-fice Web Components)的Spreadsheet控件進(jìn)行編程,并運用Excel工作表函數(shù)有效地簡化統(tǒng)計分析的數(shù)據(jù)處理過程。
1Delphi中Spreadsheet控件的編程與應(yīng)用
OWC是包含在Microsoft office的一組控件,軟件開發(fā)人員利用這些控件可以很方便地在Web文檔或傳統(tǒng)編程環(huán)境中(VB、VC、Delphi、C++Builder等)進(jìn)行數(shù)據(jù)分析和圖表處理。Microsoft Office XP版本的OWC中的Spread-sheet控件使軟件開發(fā)人員在編程語言中獲得了一個完整的Excel電子表格工作環(huán)境。顯然,只要把數(shù)據(jù)表記錄導(dǎo)入至Spreadsheet控件中。便可利用其豐富的Excel函數(shù)進(jìn)行數(shù)據(jù)分析處理。
1.1OWC組件的安裝
計算機(jī)系統(tǒng)安裝Microsoft Office XP后,在Delphi 7中單擊菜單[Project]→[Import Type Library],在隨后出現(xiàn)的對話框中選取“Microsoft Office XP Web Components 9.0(Version 1.O)”選項,其余參數(shù)選用默認(rèn)值,然后單擊?!癐n-stall”按鈕,執(zhí)行安裝:若安裝成功,在Delphi IDE的ActiveX頁面上出現(xiàn)六個OWC控件。
1.2Spreadsheet控件的數(shù)據(jù)導(dǎo)入問題
把數(shù)據(jù)表記錄導(dǎo)入至Spreadsheet控件中,其數(shù)據(jù)源可以選用OWC的DataSourceControl控件或與ADO兼容的控件,兩者的主要區(qū)別是數(shù)據(jù)源的定義方式有所不同。這里以選用OWC的DataSourceControl控件為例,討論spreadsheet控件的數(shù)據(jù)導(dǎo)入問題。其主要過程如下:
(1)從ActiveX頁面上往設(shè)計窗體加入spreadsheet和DataSourceControl控件;
(2)編寫相關(guān)程序代碼,完成Spreadsheet控件的數(shù)據(jù)導(dǎo)入:
var
RSD:ReeordSetDd
begin
DataSourceControl1.ConneetionString:=DRIVER={Microsoft AccessDriver(*.mdb)};‘+DBQ=C:TESTOBl.MDB;
RSD:=DataSoureeControl1.ReeordsetDefs.AddNew (“select*from[成績表]:‘3成績表,”);
Spreadsheet1.DataSouree:=DataSoureeContml1.DefauhIntedace as
MSDATASRC_TLB.DataSource;
spreadsheet1.DamMember:=Rsd.Name;
end;
(3)Spreadsheet控件數(shù)據(jù)導(dǎo)入程序的運行結(jié)果
1.3Spreadsheet控件相關(guān)的屬性及方法
Spreadsheet控件詳盡的使用說明可參見Microsoft Of-fice Web組件對象模型的幫助文檔,不同的Office版本其OWC幫助文檔的名稱會有所不同。如Office 2000為MSOWCVBA.chm、Office XP為OWCVBAlo.clun,而Office2003則為OWCVBAl1.clam,用戶可在資源管理器中定位到相應(yīng)的目錄后便可打開相應(yīng)的幫助文檔.本文所運用到Spreadsheet控件的主要屬性和方法。
1.4spreadsheet控件的Excel函數(shù)應(yīng)用
由于Spreadsheet控件為用戶提供了Excel電子表格的工作環(huán)境,因此眾多的Excel工作表函數(shù)可以直接在Spreadsheet控件的單元格中使用。圖1中各個學(xué)生的總分、最高分、最低分及名次等信息均可分別調(diào)用Excel工作表的Sum、max、min、Rank函數(shù)來處理,具體代碼如下:
var
i:integer;
begin
Spreadsheet1.Cells.hem[2,6].Value2:==sum(c2:e2);
Spreadsheet1.Cells.Item[2,7].Value2:==max(c2:e2);
Spreadsheetl.Cells.Item[2,8].Value2:==min(c2:e2);
spreadsheet1.Cells.Item[2,9].Value2:==Rank(f2,f$2:F$65536,0);
Spreadsheet1.Ceils.Range[Spreadsheet1.Cells.Ihem[2,6],Spreadsheet1.Cells.Item[2,9J].Select;
for i:=1 to ADOQuery1.ReeordCount-1 do
Spreadsheet1.Selection.Copy(Spreadsheet1.Cells.Item[2+i,61);
end;
程序最終的運行結(jié)果如圖3所示:
2結(jié)束語
Spreadsheet控件為眾多編程語言提供了Excel電子表格的工作環(huán)境,它的可編程內(nèi)核和豐富的工作表函數(shù)為MIS應(yīng)用系統(tǒng)帶來了一種全新的、快捷的數(shù)據(jù)處理方法。