VFP控制Excel進行處理數(shù)據(jù)_第1頁
VFP控制Excel進行處理數(shù)據(jù)_第2頁
VFP控制Excel進行處理數(shù)據(jù)_第3頁
VFP控制Excel進行處理數(shù)據(jù)_第4頁
VFP控制Excel進行處理數(shù)據(jù)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、*!*VFP和Excel都可以用來進行處理數(shù)據(jù)庫表格,如果巧妙地將二者的優(yōu)點結合起來,將會大大方便我們的工作。比如我們可以利用VFP進行處理數(shù)據(jù),而利用Excel的預覽打印功能進行報表打印。這就需要我們在VFP中直接來控制Excel。下面就在開發(fā)VFP應用項目時對Excel的控制作一下介紹:  oExcel=Createobject("Excel.application") &&創(chuàng)建Excel對象  *對象屬性 oExcel.Visible=.T. &&顯示Excel窗口 oExcel.Caption="VFP應

2、用程序調用Microsoft Excel" &&更改Excel標題欄 oExcel.DisplayAlerts = .F. &&關閉提示和警告消息,運行結束后,應將本屬性設置回 True 值 oExcel.cells(1,4).Value=XM(XM為數(shù)據(jù)庫字段名) &&給單元格賦值  *Workbooks屬性 oExcel.Workbooks.Add &&添加新工作簿 oExcel.Workbooks.Open("c:templl.xls") &&打開指定工作簿 oExce

3、l.Workbooks.Close &&關閉工作簿 oExcel.Quit &&退出Excel Release oExcel &&只有釋放對象變量, EXCEL進程才會完全關閉  *Worksheets屬性 oExcel.Worksheets("sheet3").Activate &&設置第3個工作表為激活工作表 oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 &&在第18行之前插入分頁符 oExcel.WorkSh

4、eet("Sheet2").Range("A1").PasteSpecial &&粘貼 *ActiveWorkbook屬性 oExcel.ActiveWorkbook.SaveAs("c:temp22.xls") &&工作表另存為 oExcel.ActiveWorkbook.saved=.T. &&放棄存盤,避免出現(xiàn)保存對話框 oExcel.ActiveWorkbook.Save &&存盤 oExcel.ActiveWorkbook.Close(.F.) &&am

5、p;關閉工作簿 oExcel.ActiveWorkbook.Protect('密碼',.T.,.T.) &&保護工作薄(第一個.T.:保護工作簿結構,第二個.T.:保護工作簿窗口)  *ActiveSheet屬性 oExcel.ActiveSheet.UsedRange.Copy &&拷貝整個工作表 oExcel.ActiveSheet.PrintPreview &&打印預覽工作表 oExcel.ActiveSheet.PrintOut &&打印輸出工作表 oExcel.ActiveSheet.Prote

6、ct('密碼',.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.) &&保護工作表 oExcel.ActiveSheet.Protection.AllowEditRanges.Add("區(qū)域3",oExcel.ActiveSheet.Range("A2:D5") &&設置允許用戶編輯區(qū)域   *表格列屬性 oExcel.ActiveSheet.Columns(2).Insert &&在第2列之前插入一列 oExc

7、el.ActiveSheet.Columns(1).ColumnWidth=5 &&設置指定列的寬度(單位:字符個數(shù)) oExcel.ActiveSheet.Columns(4).PageBreak=0 &&在第4列之前刪除分頁符 oExcel.ActiveSheet.Columns(1).Font.Bold=.T. &&設置整列字體為粗體  *表格行屬性 oExcel.ActiveSheet.Rows(2).Insert &&在第2行之前插入一行 oExcel.ActiveSheet.Rows(1).RowHeight

8、=1 &&設置指定行的高度(單位:磅)(設定行高為 1磅 , 1磅 =0.035厘米) oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&設置第50行至100行的高度   *表格范圍屬性 oExcel.Range("A4:c4").HorizontalAlignment =1 &&水平(1-默認、2-靠左、3-居中、4-靠右、5-填充、6=兩端對齊、7=跨列居中、8=分散對齊) oExcel.Range("A4:c4").Verti

9、calAlignment =2 &&垂直(1=靠上、2=居中、3=靠下、4=兩端對齊、5=分散對齊)oExcel.Range("A4:C4").WrapText =.F. &&文本自動換行 oExcel.ActiveSheet.Range("A4:B5").Merge=.T. &&合并單元格 oExcel.ActiveSheet.Range("A1:E2").Copy &&拷貝指定區(qū)域 oExcel.ActiveSheet.Range("b3:d3")

10、.BorderS(2).Weight=3 &&指定邊框線寬度(Borders參數(shù)如下) oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1 &&設置四個邊框線條的類型 &&(其中Borders參數(shù):1左、2右、3頂、4底、5斜、6斜/;LineStyle值:1與7細實、2細虛、4點虛、9雙細實線)   *頁面設置 WITH oExcel.ActiveSheet.PageSetup .CenterHeader="報表1" &&am

11、p;設置頁眉 .CenterHeader="&50報表1" &&設置頁眉(字體大小),'&'后面的50可以自定義,表示字體的大小 .CenterFooter="第&P頁" &&設置頁腳(LeftFoot:居左,CenterFooter:居中,RightFooter:居右) .CenterFooter="&28第&P頁 共&N頁" &&設置頁腳(字體大小),'&'后面的28可以自定義,表示字體的大小 .

12、HeaderMargin=2/0.035 &&設置頁眉到頂端邊距為2厘米 .FooterMargin=3/0.035 &&設置頁腳到底邊距為3厘米 .TopMargin=2/0.035 &&設置頂邊距為2厘米 .BottomMargin=4/0.035 &&設置底邊距為4厘米 .LeftMargin=2/0.035 &&設置左邊距為2厘米 .RightMargin=2/0.035 &&設置右邊距為2厘米 .CenterHorizontally=.T. &&設置頁面水平居中 .Cent

13、erVertically=.T. &&設置頁面垂直居中 .Papersize=1 &&設置頁面紙張大小(1窄行8511 39寬行1411 9:A4) .Orientation=1 &&設置紙張方向(1-豎向,2-橫向) .PrintTitleRows="$1:$2" &&設置頂端標題行,(每頁都打印行標頭(每頁頂部出現(xiàn)的單元格的行)) .PrintGridlines=.T. &&打印單元格網(wǎng)線 .Zoom=75 &&設置縮放比例為75% ENDWITH   *單元格設置

14、 WITH oExcel.ActiveSheet.Cells(1,1) &&第一行第一列單元格 .Font.Name="黑體" &&字體名字 .Font.Size=25 &&大小 .Font.Italic=.T. &&為斜體(Bold-粗體) .Value="數(shù)值" &&給單元格賦值 .ClearContents &&清除單元格公式 ENDWITH   *以下為一些過程 *檢測當前目錄是否有同名的EXCEL表,如果有先刪除,再另存 If !File(

15、Sys(5) + Curdir() + "result.xls") oExcel.ActiveWorkbook.SaveAs(Sys(5) + Curdir() + "result.xls") Else lcFileName = loExcel.GetSaveAsFilename("result", "Excel (*.xls), *.xls") If !Empty(lcFileName) If File(lcFileName) Delete File (lcFileName) Endif oExcel.Activ

16、eWorkbook.SaveAs(lcFileName) Endif Endif *!*拷貝整個工作表(含格式) oExcel.activesheet.cells.Copy &&拷貝 oExcel.sheets(1).Select &&選擇第一工作表 oExcel.ActiveSheet.Paste &&粘貼 oExcel.ActiveSheet.Cells(3,4).Value && ActiveSheet 為當前的Sheet工作薄名字,Cells(3,4).value 為第3行第4列的值  *!* 顯示某個單元格的批

17、注內容 oExcel=Createobject("Excel.application") oExcel.Workbooks.Open("d:TESTtesta.xls") oExcel.Visible=.T. ?oExcel.Range("B5").Comment.Text &&顯示B5單元格的批注內容 oExcel.Workbooks.Close oExcel.Quit Release oExcel  *!* 將當前工作表中的已用區(qū)域(只讀)存入數(shù)組。 strPath='D:TEST123.xls&

18、#39; Local oExcel oExcel=Createobject("Excel.Application") oExcel.WorkBooks.Open(strPath) arrTableInfo=oExcel.ActiveSheet.UsedRange.Value &&將當前工作表中的已用區(qū)域(只讀)存入數(shù)組。 oExcel.Quit Release oExcel Insert Into 表名 From arrTableInfo *!* 設置excel批注的字體(excel 2000實現(xiàn)了,如下:) ole.Range("a3"

19、).Comment.Shape.Select && 此命令要求批注的 Visible=.t. ole.Selection.Font.Size=9 ole.Selection.Font.Name="黑體" ole.Selection.Font.bold=.F. 注:該組命令要求先選中批注框,否則寫成 ole.Range("a3").Comment.Shape.Font.Size=9 則出錯,不知為何! *!* 如何取得當前EXCEL表中工作表的數(shù)目及各工作表的名稱? Clear Local lnSheetCount oExcel=Creat

20、eobject("EXCEL.APPLICATION") &&創(chuàng)建Excel對象 oExcel.WORKBOOKS.Open("c:111321.xls") &&打開指定工作簿 With oExcel lnSheetCount=.WorkBooks(1).Sheets.Count &&統(tǒng)計工作表數(shù)量 Endwith ?'當前EXCEL表中工作表的數(shù)目為:'+Alltrim(Str(lnSheetCount) For Each oMyVar In oExcel.sheets ?'當前E

21、XCEL表中工作表的名稱分別為'+oMyVar.Name &&顯示Excel表中所有工作表 Next oMyVar oExcel.WORKBOOKS.Close &&關閉工作簿 oExcel.Quit &&退出Excel  *!* 如何用編程的方法打開有密碼的Excel文件? *Excel文件加了密碼,如何在VFP中用編程的方式把密碼輸入,使Excel文件打開 oExcel=Createobject('Excel.application') oExcel.Workbooks.Open("d:22.xls

22、") *!* 這樣還有一個密碼的對話框出來,需要輸入密碼才能打開文件。 *!* 如何用編程的方法直接打開有密碼的Excel文件? oExcel.Workbooks.Open("d:22.xls",.F.,.F., ,"123","456") "123"表示打開權限的密碼, "456"表示修改權限的密碼. *!* 如何將一個已知路徑的圖片插入到excel中. oExcel.ActiveSheet.PictureS.Insert("圖片文件名") *!* 能不能指定在某

23、一位置或區(qū)域放置圖片并控制圖片顯示大小呢? oExcel.SHEETS(1).Select oExcel.Range("位置").Select oExcel.ActiveSheet.PictureS.Insert("圖片文件名").Select oExcel.Selection.ShapeRange.LockAspectRatio =.T. oExcel.Selection.ShapeRange.Height = 57 *!* 類型為字符型的字段輸出到excel 中,前面的零被自動去掉,例如“ 009877” 變?yōu)椤?9877” ,怎么解決? *!* 方

24、法1.在字符串前面加半角單引號“ ' ”, *!* 例如: oExcel.Cells(1,1).Value="'0123" *!* 或用變量 cString="'"+"0123" &&其中0123可以取自表中一個字段 oExcel.Cells(1,1).Value=cString &&o.Range("A1:A1").value=cString *!* 方法2. oExcel.CELLS(1,1).Select &&或eole.Range(&q

25、uot;A1:E1").Select oExcel.Selection.NumberFormatLocal = "" &&把被選定的單元格設為文本格式 oExcel.Cells(1,1).Value="0123" &&給所選單元格覆值 *!* 獲取 Excel 記錄數(shù) loXls = Createobject("excel.application") bookExcel = loXls.Application.Workbooks.Open("f:pz.xls") nrows

26、=bookExcel.Worksheets('pz') UsedRange =nrows.UsedRange r=UsedRange.Rows.Count &&有數(shù)據(jù)的總行數(shù) c=UsedRange.Columns.Count &&有數(shù)據(jù)的總列數(shù) loXls.Workbooks.Close loXls.Quit  *!* 在EXCEL中如何在打開文件的同時自動執(zhí)行一個宏命令。 只要將宏的命名為 AUTO_OPEN 即可。 如果要在文件關閉時運行,則命名為auto_close 。   *!* 在VFP中可以執(zhí)行EXCEL的選擇性

27、粘貼嗎? .Range("A2").PasteSpecial ("xlPasteValues") && 會出錯 .Range("A2").PasteSpecial (3) && 也會出錯 .Range("A2").PasteSpecial && 只好這樣了   *!* 如何才能只粘貼值呢? xlPasteValues=-4163 oExcel.Range("A1").Select oExcel.Selection.Copy oExcel.

28、Range("B1")._PasteSpecial(xlPasteValues) *注意:在Excel 中,"xlPasteValues"是一個常量,它的值是一個數(shù)值型的:-4163 oExcel.Range("A1").Copy oExcel.Range("B3").PasteSpecial(8) &&粘貼行、列寬 oExcel.Range("B3").PasteSpecial(-4122) &&粘貼格式  *!* 本程序通過將原dbf表拷成excel

29、格式,然后導入并設置報表格式 Para tablename Local hb1 As excel.Application Wait "正在導出數(shù)據(jù),請稍侯" Window At 20,30 Timeout 1 bhaveerror=.F. &&定義一個變量判斷是否發(fā)生錯誤 Try hb1=Createobject("excel.application") Catch Messagebox("請檢查你是否已安裝microsoft excel應用程序!",0,"提示") bhaveerror=.T. E

30、ndtry If bhaveerror=.T. Return Endif If Right(curr_path,1)<>'' curr_path=curr_path+"" Endif ctablename=tablename+"_excel" filepath=curr_path+"tempsheet1.xls" *filepath="tempsheet1.xls" If !File(filepath) Messagebox("數(shù)據(jù)源的excel文件未生成,報表生成被終止!&q

31、uot;) Return Endif HB1.workbooks.Open(filepath) HB1.SHEETS("sheet1").Select hb1.sheets(1).Rows(1).entirerow.Insert hb1.sheets(1).Rows(1).entirerow.Insert Sele (ctablename) nfieldcount=Fcount() nreccount=Reccount() hbdygs="A1:"+Chr(nfieldcount+64)+"2" HB1.Range(hbdygs).S

32、elect *合并兩行作為報表標題* HB1.Selection.HorizontalAlignment = 3 &&水平方向 2左對齊,3居中,4右對齊 HB1.Selection.VerticalAlignment = 2 &&垂直方向 1靠上,2居中,3靠下 HB1.Selection.WrapText = .F. && ? HB1.Selection.Orientation = 0 && ? HB1.Selection.AddIndent = .F. && ? HB1.Selection.ShrinkToF

33、it = .F. && ? HB1.Selection.MergeCells = .T. && ? HB1.Range(hbdygs).FormulaR 1C 1 = "請輸入報表標題" HB1.Range(hbdygs).Characters.Font.Name = "隸書" HB1.Range(hbdygs).Characters.Font.FontStyle = "常規(guī)" HB1.Range(hbdygs).Characters.Font.ColorIndex = 1 &&字符顏色

34、 *根據(jù)數(shù)據(jù)源表結構的寬度設置列的寬度* Copy Stru Exte To tempterm_stru Sele 0 Use tempterm_stru Select (ctablename) For i=1 To nfieldcount cvalue=Allt(Field(i) Select term_stru Loca For Lower(Allt(field_name)=cvalue If Found() columnname=Chr(i+64)+":"+Chr(i+64) hb1.Columns(columnname).ColumnWidth=field_len

35、Endif Sele (ctablename) Endfor Sele term_stru Use activecellname=Chr(nfieldcount+64)+Allt(Str(nreccount+3) *設置數(shù)據(jù)區(qū)域的字體格式* HB1.Range("A3:"+activecellname).Characters.Font.Name = "宋體" HB1.Range("A3:"+activecellname).Characters.Font.Size= 9 HB1.Range("A3:"+activecellname).Select hb1.Selection.BorderS(1).LineStyle = .T. hb1.Selection.BorderS(2).linestyle = .T. hb1.Selection.B

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論