芮瑞
摘 要:EXCEL電子表格具有簡單靈活、功能強大等優點,因此受到了廣泛的使用,其圖表制作能力突出;VFP作為常用的界面編輯和數據處理軟件,提供了親和度較高的操作方式,在數據管理方面也呈現出穩定高效的優點。文章著眼于這兩種常用的優秀軟件,分析其數據格式的特點,并探討兩種軟件之間數據共享與傳輸的可能性,具有一定的現實意義。
關鍵詞:EXCEL;VFP;數據傳輸
目前Office辦公軟件已經得到了廣泛的應用,而其中的EXCEL軟件作為制表專用軟件,由于其便捷的操作界面,強大的圖標編輯功能和數據處理功能更是得到了絕大多數用戶的青睞,已經成為了該類型軟件中的代表作;與此同時,大多數桌面型數據庫系統采用的是Visual Foxpro(VFP)軟件作為其數據庫平臺來進行開發和設計,對于研發人員而言,VFP是相對簡單的開發工具,但是對于大多數使用者而言則稍顯困難,尤其是在數據處理分析和圖表制作的過程中,不少用戶反映對于VFP的操作方式不熟悉,很難掌握,而對于EXCEL則能夠輕松駕馭,因此,文章從幾個方面研究了這兩種常用的辦公軟件的數據庫系統之間的數據通信與轉換問題,具有明顯的現實意義。
1 最迅速便捷地由VFP數據表轉換成EXCEL表
(1)進入VFP系統操作使用VFP系統軟件打開現存的VFP表;(2)在“顯示”菜單中,選擇“瀏覽”項,已瀏覽的模式打開數據庫表;(3)在“文件”菜單中,講打開的該表另存為HTML,即將該表保存成網頁形式;(4)Excel支持打開網頁文件,可在剛才的文件上單擊右鍵,選擇使用EXCEL打開,或者先打開EXCEL,“文件”菜單下選擇打開剛才保存的文件;(5)如果發現文件格式或內容需要修改,則可在EXCEL下進行調整,完成后將該文件保存成EXCEl文檔格式即可。該方法可針對大多數數據格式進行兩種軟件之間的轉換,如數值型、文本型等,但對于通用型的數據,該方法則不適用。
2 最直接的由Excel轉換成VFP數據表
該方法本質上就是上一方法的逆操作,即利用文件后綴名改變文件對應的打開軟件。(1)進入EXCEL軟件,打開某一EXCEl表,在“文件”菜單下選擇另存為后綴名為.dbf的文檔,即數據庫文檔;(2)用VFP 打開該表,查看方式為瀏覽方式,會發現系統自動的將原EXCEl表的表頭轉換為現在數據庫表的字段名;(3)調整后保存即可。
3 通過導出和導入功能實現數據轉換
3.1 數據由VFP表導出到EXCEL表
(1)打開VFP數據表后,建立Excel對象;(2)在Excel.對象中建立工作簿和工作表;(3)對該表進行內容輸入和調整;(4)將數據表中的記錄數據放入Excel工作簿的單元格中。程序代碼如下:
set default to
use
myexcel.visible=.t.;myexcel.workbooks.add
myexcel.sheets.add &&添加一工作表,如表名為test
myexcel. cells(1,1).value=
myexcel. cells (3,1).value="
&&填寫表頭,本例中表頭名為"record1,record2…"
myexcel. cells(3,2).value="
………………
i= 0;scan all;myexcel.cells(4+i,1).value=
&& 為record1字段下的第一行單元格輸入一個值
myexcel.cells(4+i,2).value=
i= i+1;endscan
執行完成上述代碼后,關閉excel即可。用此方法同樣只能針對大多數數據格式的轉換,對通用型數據格式仍舊不支持。
3.2 由excel表導入到vfp表
此方法依舊是前一方法的逆操作,首先建立excel兌現,隨后建立工作薄對象打開excel文件,再打開數據庫表,利用sql語句將excel的屬性value與數據庫表中的字段聯系起來導入數據。
下例中完成的操作為將excel表導入到某一數據庫表文件中。代碼如下:
set default to
obexcel= createobject(“excel.application“)
obexcel.visible=.t.obexcel.workbooks.open(test.xls)
use
for i= 1 t0 currow
insert into
values(obexcel. cells(i,1).vale;obexcel.cells(i,2).vale,;
obexcel.cells(i,3).vale,;endfor
4 動態數據圖的建立
vfp只能支持靜態的數據圖表,而對動態圖標無能為力,利用excel可以很好的彌補這一缺陷。具體方法是先通過上文所述的方法將數據庫表的數據導出到excel工作表中,然后打開excel,利用其自帶的charts方法為該表添加統計圖,代碼為:
myexcel= createobject (excel. application)
&& myexcel為excel 的對象名
myexcel.visible=.t.&& 顯示該excel對象
myexcel.workbooks. add
myexcel.activeworkbook. sheets(1).
cells(1,1).value=record1;myexcel.cells(1,2).value=record2
clear all
set default to d:\exam
use test.dbf
currow=myex cel. activesheet. rows. count
rangs= a1:+g+alltrim(str(currow) )
myexcel.rang(rangs).select
myexcel.charts. add
myexcel.activesheet.printpreview
通過以上步驟,就可以實現VFP中圖標與EXCEl的動態鏈接,實現了動態圖標的效果,可將上述代碼放入一事件代碼框架中,如click()事件等,通過用戶的點擊操作自動執行。
參考文獻
[1]王毓珠,馬希榮.Visual Foxpro程序設計[M].北京:人民郵電出版社,2005.
[2]何小苑,王樹勇.EXCEL在VFP軟件開發中的應用[J].廣東水利電力職業技術學院學報,2004,6.