張浩 寧夏紅寺堡揚水管理處
VFP中利用OLE功能驅動EXCEL實現復雜報表
張浩 寧夏紅寺堡揚水管理處
介紹了在VFP 中利用OLE功能驅動EXCEL來制作復雜報表的原理,以及通過VFP 和EXCEL 完成一個動態報表任務的具體實現過程,并給出了具體的實現方法。
VFP;OLE;Excel;復雜報表
當前比較流行的大型數據庫系統包括Oracle,Sybase,Informix和SQL Server等,小型數據庫系統則包括Visual FoxPro和Access等。嚴格地將,Visual FoxPro是一種集宿主語言和數據庫為一體的數據庫系統,它完全可以作為一種編程語言或數據庫單獨使用。它作為宿主語言和數據庫的結合體,為進行快速數據庫應用開發提供了可能。由于各行業的計算機應用層次不一,水平高低不同,而且對小微企業來說部署大型數據庫系統既不經濟,也不現實。所以小型數據庫系統仍有應用空間。這也是低成本信息化中國發展戰略的重要組成部分。
Visual FoxPro ,是Microsoft公司從Fox公司的FoxBase數據庫軟件經過數次改良,并且移植到Windows之后得來的應用程序開發軟件,主要用于開發數據管理與運算等方面的軟件。VFP是Microsoft公司推出的最新可視化數據庫管理系統平臺,是功能特別強大的32位數據庫管理系統。它提供了功能完備的工具、極其友好的用戶界面、簡單的數據存取方式、獨一無二的跨平臺技術,有良好的兼容性、真正的可編譯性和較強的安全性,是目前最快捷、最實用的小型數據庫管理系統開發軟件之一。
Visual FoxPro 6.0/9.0及其中文版,是可運行于Windows 95/XP和Windows NT/2000平臺的32位數據庫開發系統,它不僅可以簡化數據庫管理,而且能使應用程序的開發流程更為合理。Visual FoxPro使組織數據、定義數據庫規則和建立應用程序等工作變得簡單易行。Visual FoxPro 6.0/9.0還提供了一個集成化的系統開發環境,它不僅支持過程式編程技術,而且在語言方面作了強大的擴充,支持面向對象可視化編程技術,并擁有功能強大的可視化程序設計工具,同時也支持客戶/服務器程序設計和XML與Web服務。目前,Visual FoxPro 6.0/9.0是用戶收集信息、查詢數據、創建集成數據庫系統、進行實用系統開發較為理想的工具軟件。利用可視化的設計工具和向導,用戶可以快速創建表單、查詢和打印報表。
在國內的數據庫應用開發中經常會遇到使用復雜報表的情況,所謂復雜報表也就是通常所說的中國式報表。這種報表一般具有相對復雜的表現形式,而且報表的格式和內容應工作的需要經常發生變化。如果僅僅使用VFP語言向導或編寫代碼來實現復雜報表,將花費大量的人力和時間。針對這點,筆者嘗試利用VFP提供的OLE(Object Linking and Embedding)對象鏈接與嵌入技術,通過VFP調用OLE驅動EXCEL,將報表內容輸出到Excel應用程序中,再通過Excel打印,在制作復雜報表方面取得了較好的效果,充分體現了VFP在作為小型數據庫前端開發工具的良好擴展性。
1.1 為減輕編程工作量,可在Excel中,制作報表模板并保存在應用程序的相關目錄中待備用;
1.2 在VFP中通過數據操縱語言的相關類集獲得報表所需數據,將數據寫入臨時文件中;
1.3 利用OLE技術,通過VFP調用OLE,啟動Excel應用程序;
1.4 在VFP中,讀取存有報表所用數據的臨時文件;
1.5 根據讀取的數據,通過VFP 和OLE 編程動態調用1.1中的報表模板生成相應的報表,顯示在Excel中;
1.6 在Excel中預覽,打印報表;
1.7 退出Excel,返回到VFP中;
其中,第1.2~1.5步是實現過程中的關鍵步驟。
根據以上思路,結合實例,分別在VFP和EXCEL中實現,最后給出我單位調度日報表的實現效果圖。
2.1 報表模板制作
首先在Excel中按照報表格式要求制作好一張空白表,為減少編程工作量,可以將報表標題、報表頭、行列寬度等按照需要的格式制作好,保存在特定的應用程序目錄下待用。由于是Excel的基礎知識,本篇此處不再贅述。
2.2 VFP中實現方法
VFP中主要實現步驟為:從數據庫中查詢檢索出數據,存入臨時文件。
首先要對所使用的變量進行定義,部分程序代碼如下:
[該段代碼統計當班調度的機組投運臺次、投運機組編號及運行情況、以泵站為單位截至規定統計時間段內的機組累計運行時間等信息]
**統計查詢機組年累計運行時數及當前運行機組編號和投用臺數



該報表程序代碼還有很多模塊,限于篇幅不再一一列舉。
2.4 實現效果
由以上步驟可以實現如下圖所示的效果報表(見圖1,部分數據保密涂黑)。

圖1
筆者介紹了如何在VFP中利用OLE技術,結合VFP和EXCEL的各自優勢來制作復雜報表的實現思想和實現過程。在開發信息系統的過程中用該方法可以方便快速的制作復雜報表,這也在報表的數次修改中深有體會,極大提高了程序開發和維護的效率。
10.3969/j.issn.1001-8972.2012.03.032