在數(shù)據(jù)庫的編程應(yīng)用中經(jīng)常用到將數(shù)據(jù)從一種文件格式轉(zhuǎn)變另一種格式,這時OLE是一種上上之選,OLE技術(shù)以其易用性以及平臺無關(guān)性成為了編程人員的上上之選。不過我們在開發(fā)程序時,一個模塊一般只能用于將一個數(shù)據(jù)表導出因為導出數(shù)據(jù)內(nèi)容受表結(jié)構(gòu)的限制,表結(jié)構(gòu)不同則編程中必須要做一切改動。筆者在開發(fā)一個學務(wù)管理系統(tǒng)的過程就遇到這類問題。經(jīng)過一番探索筆者巧妙地結(jié)合VFP函數(shù)成功實現(xiàn)了表文件無關(guān)地導出。最后成功實現(xiàn)了將源表導出到EXCEL中。特此提出以供大家討論,同時借此拋磚引玉,還望高手不吝賜教。
其實筆者所用的原理很簡單。主要使用了Visual Foxpro中的FCOUNT()與FIELDS函數(shù)。打開表后利用FCOUNT()函數(shù)取得了表中的字段個數(shù)。然后用FIELDS()函數(shù)設(shè)法取得各個字段的字段名。這樣問題就基本解決了。不過在實踐中筆者發(fā)現(xiàn)僅取得了字段名還不能取得記錄中各字段的值,筆者利用宏替代暫時解決了此問題。如果哪位高手有更好的方法。還望指教。
源碼清單:
local myoleapp
local myfilename
local myfield
yfilename=getfile("*.dbf")&&得到源表
myoleapp=createobject("excel.application") &&創(chuàng)建OLE對象
myoleapp.visible=.t.
myoleapp.workbooks.add
use &myfilename
for i=1 to fcount()
myoleapp.cells(i,1).value=fields(i)
endfor
scan
for i=1 to fcount()
myfield=fields(i)
myoleapp.cells(recno()+1,i).value=&myfield
endfor
endscan
myoleapp.activeworkboods.saveas("myxls.xls")
myoleapp.quit