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