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