摘要:介紹了一種Visual Basic中通過在OLE容器中嵌入Excel圖形的方法來實現圖形功能的方法,利用了Excel強大的圖形功能,為我們實現Visual Basic中的圖形功能提供了新的思路。
關鍵詞:Visual Basic;OLE;Excel;圖形
中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2008)34-2043-02
Realization of Multiple Operating Systems and Virtual Network Based on VMware
HUANG Zhi
(Mianyang Normal University, Mianyang 621000, China)
Abstract: A method of realizing graphics function with Excel graphics embedded in OLE container in Visual Basic is introduced. Great graphics function of Excel is used and a new idea of realizing graphics in Visual Basic is provided.
Key words: Visual Basic; OLE; Excel; graphics
1 引言
某信息系統用于數據的分析和預測、預警,該系統使用VB6.0開發,數據庫采用SQLServer2000。為了更加直觀的反映各種數據,提出了圖形功能的要求,即根據數據庫中的數據,作出條形圖、曲線圖、餅圖等圖形,使各種數據一目了然。
VB具有Shape、Image、MSChart等圖形控件,但是這些控件都存在著功能不完善、圖形不美觀等缺點,因此最終選擇了在OLE容器中嵌入Excel圖形的方法來實現圖形功能。
2 主要工具及技術介紹
2.1 Visual Basic
Visual Basic是Microsoft開發的可視化工作室(Visual Studio)中的重要成員,由早期的Basic語言逐步演變而來。它一方面繼承了早期Basic語言簡單易用的特點,另一方面引入了面向對象的編程機制,形成所見即所得的可視化程序設計方法,從而大大簡化了Windows應用程序的設計。
2.2 OLE
OLE(Object Linking and Embedding,對象鏈接與嵌入)是Windows提供的一種信息共享或交換方式,在辦公自動化等軟件中已經廣泛應用,在多媒體軟件開發中應用這一技術可使VB利用其他應用程序來制作多媒體數據,然后將它們“鏈接”或“嵌入”到VB的數據文件中直接使用。
為便于利用OLE的功能,VB提供了一種稱為OLE容器的控件,這種控件允許將其他媒體工具制作的多媒體對象添加到VB應用程序的窗體中,從而使VB應用程序可方便的顯示和編輯其他Windows應用程序中的數據。一旦VB激活了OLE控件,控件就會指向產生這些數據的應用程序,并且借助該應用程序的力量修改這些數據。[1]
2.3 Excel
Excel是一種電子表格軟件,是MSOffice系列辦公軟件的成員之一,可以用來制作電子表格、完成數據運算,并且具有強大的圖形功能,提供了11種類型的圖表,其中又含有73種圖表子類型,完全可以滿足該系統對圖形功能的需求。
3 圖形功能實現方法
該信息系統的圖形處理功能可以實現條形圖、曲線圖和餅圖的功能。每一種圖形對應VB程序中的一個OLE容器。實現圖形功能的步驟如下:
1) 系統創建Excel臨時文件;
2) 系統從數據庫中讀出數據,并將這些數據填入Excel臨時文件中;
3) 根據填入的數據,在Excel文件中產生圖形;
4) 把Excel文件中的圖形鏈接到系統的OLE容器中,并顯示出來,實現圖形功能。
3.1 創建臨時文件
為了創建Excel臨時文件,需要創建相關的對象并設置相關參數。部分代碼如下。
……
Set xApp = New Excel.Application
xApp.AlertBeforeOverwriting = False
Set xBook = xApp.Workbooks.Add
xBook.ShowConflictHistory = False
Set xSheet = xBook.Worksheets(1)
……
3.2 讀出數據并填入到臨時文件
通過VB的數據連接控件連接到SQLServer數據庫,讀出相關的數據,填入到Excel表格中正確的位置,最后保存Excel臨時文件。部分代碼如下。
rsTmp.MoveFirst
While Not rsTmp.EOF
……
xSheet.Cells(timp, strIntToStr(CStr(timp2))) = CStr(rsTmp.Fields(j).Value)
……
Wend
……
Call xBook.SaveAs(App.Path \"\xt.xls\", , , , , , , , xlLocalSessionChanges)
……
3.3 在Excel中產生圖形
根據填入的數據以及各種參數,在Excel臨時文件中作出相應的圖形,并保存Excel臨時文件。部分代碼如下。
……
Set xBook = xApp.Workbooks.Open(App.Path \"\xt.xls\")
xBook.ConflictResolution = xlUserResolution
If xBook.MultiUserEditing Then
xBook.ExclusiveAccess
End If
Set xSheet = xBook.Sheets(1)
Set xChart = xBook.Charts.Add
……
xChart.SetSourceData Source:=xSheet.Range(\"A\" CStr(m) \":\" strIntToStr(CStr(timp2)) CStr(m))
xChart.SeriesCollection(1).Interior.Color = clXl(k)
xChart.SeriesCollection(1).Name = strXl2(m)
……
Call xBook.Close(True)
frmResult.oleTxt.CreateLink (App.Path \"\xt.xls\")
……
3.4 Excel圖形和OLE控件的鏈接
在Excel臨時文件中作出圖形以后,需要把該臨時文件鏈接到VB程序相應的OLE控件中,才能在VB程序中顯示圖形。只需要一行代碼即可實現Excel臨時文件與OLE控件的鏈接。
……
frmResult.oleTxt.CreateLink (App.Path \"\xt.xls\")
……
圖形功能運行結果如圖1所示。
4 結束語
和VB的Shape、Image、MSChart等圖形控件相比,使用在VB的OLE容器中嵌入Excel圖形的方法來實現圖形功能,具有功能強大、圖形美觀等優點,收到了良好的效果,為我們實現VB中的圖形功能提供了新的思路。
參考文獻:
[1] 史濟民,史令,沈齊生.多媒體應用與開發基礎[M].北京:清華大學出版社,2003.