VFP中利用Excel制作數(shù)據(jù)庫報(bào)表

字號:

編程中主要使用了CreateObject()函數(shù),它可從類定義或支持OLE自動(dòng)化的應(yīng)用程序中創(chuàng)建對象,并將對象引用賦給變量或數(shù)組元素;若使用用戶自定義類,則在創(chuàng)建對象之前,用戶自定義類必須先用 Define Class 來創(chuàng)建,或者用 SET Classlib 打開的 .VCX 可視類庫中的類。
    假定在一個(gè)VFP項(xiàng)目中有數(shù)據(jù)表:table1.dbf(其中總分暫為0):
    我們希望在VFP的這個(gè)項(xiàng)目運(yùn)行時(shí),調(diào)用Excel來處理這個(gè)數(shù)據(jù)表,并將處理結(jié)果存盤。下面的程序excel01.prg實(shí)現(xiàn)了這些要求,程序中用CreateObject()函數(shù)啟動(dòng)Excel,并新建一個(gè)Excel工作簿,然后打開數(shù)據(jù)表table1.dbf,取得該表的記錄數(shù),并將表table1.dbf的記錄數(shù)據(jù)逐條送到這個(gè)工作簿的工作表Sheet1中(同時(shí)計(jì)算各記錄的總分),稍加修改(例如設(shè)置字體、字號,畫表格線等)作出這個(gè)數(shù)據(jù)表的報(bào)表,并用temp.xls文件名存盤。excel01.prg源程序如下:
    SET DEFAULT TO d:\myvfp\kwsjk
    Clear
    oleApp = CREATEOBJECT(″Excel.Application″)
    oleApp.Visible=.T. && 顯示 Excel。
    oleApp.Workbooks.Add
    ** 設(shè)置單元格的值(報(bào)表標(biāo)題):
    oleApp.Cells(1,1).Value=″貴州大學(xué)計(jì)算機(jī)軟件與理論研究所″
    oleApp.Cells(2,1).Value=″學(xué)生成績表″
    **
    oleApp.Cells(4,1).Value=″姓名″
    oleApp.Cells(4,2).Value=″數(shù)學(xué)″
    oleApp.Cells(4,3).Value=″網(wǎng)絡(luò)″
    oleApp.Cells(4,4).Value=″數(shù)據(jù)庫″
    oleApp.Cells(4,5).Value=″英語″
    oleApp.Cells(4,6).Value=″人工智能″
    oleApp.Cells(4,7).Value=″總分″
    ** 打開數(shù)據(jù)表,取得該表的記錄數(shù)
    use table1.dbf
    jl=RECCOUNT()-1
    ** 將數(shù)據(jù)表中的記錄數(shù)據(jù)放入Excel工作簿的單元格中
    FOR i=0 TO jl
     go i+1 && 第i+1條記錄
    oleApp.Cells(5+i,1).Value=table1.姓名
     oleApp.Cells(5+i,2).Value=table1.數(shù)學(xué)
    oleApp.Cells(5+i,3).Value=table1.網(wǎng)絡(luò)
     oleApp.Cells(5+i,4).Value=table1.數(shù)據(jù)庫
    oleApp.Cells(5+i,5).Value=table1.英語
     oleApp.Cells(5+i,6).Value=table1.人工智能
    ** 計(jì)算總分:
    oleApp.Cells(5+i,7).Value=table1.數(shù)學(xué)+table1.網(wǎng)絡(luò)+table1.數(shù)據(jù)庫+
    table1.英語+table1.人工智能
    ENDFOR
    OleApp.ActiveWorkbook.SaveAs(″D:\myvfp\kwsjk\temp.XLS″)