乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      在VFP中直接來控制Excel

       悟靜 2009-06-23

      *!*VFPExcel都可以用來進(jìn)行處理數(shù)據(jù)庫表格,如果巧妙地將二者的優(yōu)點結(jié)合起來,將會大大方便我們的工作。比如我們可以利用VFP進(jìn)行處理數(shù)據(jù),而利用Excel的預(yù)覽打印功能進(jìn)行報表打印。這就需要我們在VFP中直接來控制Excel。下面就在開發(fā)VFP應(yīng)用項目時對Excel的控制作一下介紹:

       oExcel=Createobject("Excel.application") &&創(chuàng)建Excel對象

       **對象屬性

      oExcel.Visible=.T.  &&顯示Excel窗口

      oExcel.Caption="VFP應(yīng)用程序調(diào)用Microsoft Excel"  &&更改Excel標(biāo)題欄

      oExcel.DisplayAlerts = .F. &&關(guān)閉提示和警告消息,運行結(jié)束后,應(yīng)將本屬性設(shè)置回 True

      oExcel.cells(1,4).Value=XM(XM為數(shù)據(jù)庫字段名)  &&給單元格賦值

       **Workbooks屬性

      oExcel.Workbooks.Add  &&添加新工作簿

      oExcel.Workbooks.Open("c:\temp\ll.xls")  &&打開指定工作簿

      oExcel.Workbooks.Close  &&關(guān)閉工作簿

      oExcel.Quit  &&退出Excel

      Release oExcel &&只有釋放對象變量, EXCEL進(jìn)程才會完全關(guān)閉

       **Worksheets屬性

      oExcel.Worksheets("sheet3").Activate  &&設(shè)置第3個工作表為激活工作表

      oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1  &&在第18行之前插入分頁符

      oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial  &&粘貼

      **ActiveWorkbook屬性

      oExcel.ActiveWorkbook.SaveAs("c:\temp\22.xls")  &&工作表另存為

      oExcel.ActiveWorkbook.saved=.T.  &&放棄存盤,避免出現(xiàn)保存對話框

      oExcel.ActiveWorkbook.Save  &&存盤

      oExcel.ActiveWorkbook.Close(.F.)  &&關(guān)閉工作簿

      oExcel.ActiveWorkbook.Protect('密碼',.T.,.T.)  &&保護(hù)工作薄(第一個.T.:保護(hù)工作簿結(jié)構(gòu),第二個.T.:保護(hù)工作簿窗口)

       **ActiveSheet屬性

      oExcel.ActiveSheet.UsedRange.Copy  &&拷貝整個工作表

      oExcel.ActiveSheet.PrintPreview  &&打印預(yù)覽工作表

      oExcel.ActiveSheet.PrintOut  &&打印輸出工作表

      oExcel.ActiveSheet.Protect('密碼',.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.)  &&保護(hù)工作表

      oExcel.ActiveSheet.Protection.AllowEditRanges.Add("區(qū)域3",oExcel.ActiveSheet.Range("A2:D5")) &&設(shè)置允許用戶編輯區(qū)域

        **表格列屬性

      oExcel.ActiveSheet.Columns(2).Insert  &&在第2列之前插入一列

      oExcel.ActiveSheet.Columns(1).ColumnWidth=5  &&設(shè)置指定列的寬度(單位:字符個數(shù))

      oExcel.ActiveSheet.Columns(4).PageBreak=0  &&在第4列之前刪除分頁符

      oExcel.ActiveSheet.Columns(1).Font.Bold=.T.  &&設(shè)置整列字體為粗體

       **表格行屬性

      oExcel.ActiveSheet.Rows(2).Insert  &&在第2行之前插入一行

      oExcel.ActiveSheet.Rows(1).RowHeight=1  &&設(shè)置指定行的高度(單位:磅)(設(shè)定行高為 1磅 , 1=0.035厘米)

      oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&設(shè)置第50行至100行的高度

        **表格范圍屬性

      oExcel.Range("A4:c4").HorizontalAlignment =1 &&水平(1-默認(rèn)、2-靠左、3-居中、4-靠右、5-填充、6=兩端對齊、7=跨列居中、8=分散對齊)

      oExcel.Range("A4:c4").VerticalAlignment =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").BorderS(2).Weight=3  &&指定邊框線寬度(Borders參數(shù)如下)

      oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1  &&設(shè)置四個邊框線條的類型

      &&(其中Borders參數(shù):1-左、2-右、3-頂、4-底、5-斜、6-斜/LineStyle值:17-細(xì)實、2-細(xì)虛、4-點虛、9-雙細(xì)實線)

        **頁面設(shè)置

      WITH oExcel.ActiveSheet.PageSetup

          .CenterHeader="報表1"  &&設(shè)置頁眉

          .CenterHeader="&50報表1" &&設(shè)置頁眉(字體大小),'&'后面的50可以自定義,表示字體的大小

          .CenterFooter="&P"  &&設(shè)置頁腳(LeftFoot:居左,CenterFooter:居中,RightFooter:居右)

          .CenterFooter="&28&P  &N"  &&設(shè)置頁腳(字體大小),'&'后面的28可以自定義,表示字體的大小

          .HeaderMargin=2/0.035  &&設(shè)置頁眉到頂端邊距為2厘米

          .FooterMargin=3/0.035  &&設(shè)置頁腳到底邊距為3厘米

          .TopMargin=2/0.035  &&設(shè)置頂邊距為2厘米

          .BottomMargin=4/0.035  &&設(shè)置底邊距為4厘米

          .LeftMargin=2/0.035  &&設(shè)置左邊距為2厘米

          .RightMargin=2/0.035  &&設(shè)置右邊距為2厘米

          .CenterHorizontally=.T.  &&設(shè)置頁面水平居中

          .CenterVertically=.T.  &&設(shè)置頁面垂直居中

          .Papersize=1  &&設(shè)置頁面紙張大小(1-窄行8511 39-寬行1411 9:A4)

          .Orientation=1  &&設(shè)置紙張方向(1-豎向,2-橫向)

          .PrintTitleRows="$1:$2"  &&設(shè)置頂端標(biāo)題行,(每頁都打印行標(biāo)頭(每頁頂部出現(xiàn)的單元格的行))

          .PrintGridlines=.T.  &&打印單元格網(wǎng)線

          .Zoom=75  &&設(shè)置縮放比例為75%

      ENDWITH 

        **單元格設(shè)置

      WITH oExcel.ActiveSheet.Cells(1,1)  &&第一行第一列單元格

          .Font.Name="黑體"  &&字體名字

          .Font.Size=25  &&大小

          .Font.Italic=.T.  &&為斜體(Bold-粗體)

          .Value="數(shù)值"  &&給單元格賦值

          .ClearContents  &&清除單元格公式

      ENDWITH

        *以下為一些過程

      *檢測當(dāng)前目錄是否有同名的EXCEL表,如果有先刪除,再另存

      If !File(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.ActiveWorkbook.SaveAs(lcFileName)

          Endif

      Endif

      *!*拷貝整個工作表(含格式)

      oExcel.activesheet.cells.Copy &&拷貝

      oExcel.sheets(1).Select &&選擇第一工作表

      oExcel.ActiveSheet.Paste &&粘貼

      oExcel.ActiveSheet.Cells(3,4).Value && ActiveSheet 為當(dāng)前的Sheet工作薄名字,Cells(3,4).value 為第3行第4列的值

       *!* 顯示某個單元格的批注內(nèi)容

      oExcel=Createobject("Excel.application")

      oExcel.Workbooks.Open("d:\TEST\testa.xls")

      oExcel.Visible=.T.

      oExcel.Range("B5").Comment.Text &&顯示B5單元格的批注內(nèi)容

      oExcel.Workbooks.Close

      oExcel.Quit

      Release oExcel

       *!* 將當(dāng)前工作表中的已用區(qū)域(只讀)存入數(shù)組。

      strPath='D:\TEST\123.xls'

      Local oExcel

      oExcel=Createobject("Excel.Application")

      oExcel.WorkBooks.Open(strPath)

      arrTableInfo=oExcel.ActiveSheet.UsedRange.Value &&將當(dāng)前工作表中的已用區(qū)域(只讀)存入數(shù)組。

      oExcel.Quit

      Release oExcel

      Insert Into 表名 From arrTableInfo

        *!* 設(shè)置excel批注的字體(excel 2000實現(xiàn)了,如下:)

      ole.Range("a3").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 則出錯,不知為何!

        *!* 如何取得當(dāng)前EXCEL表中工作表的數(shù)目及各工作表的名稱?

      Clear

      Local lnSheetCount

      oExcel=Createobject("EXCEL.APPLICATION") &&創(chuàng)建Excel對象

      oExcel.WORKBOOKS.Open("c:\111\321.xls") &&打開指定工作簿

      With oExcel

          lnSheetCount=.WorkBooks(1).Sheets.Count &&統(tǒng)計工作表數(shù)量

      Endwith

      '當(dāng)前EXCEL表中工作表的數(shù)目為:'+Alltrim(Str(lnSheetCount))

      For Each oMyVar In oExcel.sheets

          '當(dāng)前EXCEL表中工作表的名稱分別為'+oMyVar.Name &&顯示Excel表中所有工作表

      Next oMyVar

      oExcel.WORKBOOKS.Close &&關(guān)閉工作簿

      oExcel.Quit &&退出Excel

       *!* 如何用編程的方法打開有密碼的Excel文件?

      *Excel文件加了密碼,如何在VFP中用編程的方式把密碼輸入,使Excel文件打開

      oExcel=Createobject('Excel.application')

      oExcel.Workbooks.Open("d:\22.xls")

      *!* 這樣還有一個密碼的對話框出來,需要輸入密碼才能打開文件。

      *!* 如何用編程的方法直接打開有密碼的Excel文件?

      oExcel.Workbooks.Open("d:\22.xls",.F.,.F., ,"123","456")

      "123"表示打開權(quán)限的密碼,

      "456"表示修改權(quán)限的密碼.

        *!* 如何將一個已知路徑的圖片插入到excel.

      oExcel.ActiveSheet.PictureS.Insert("圖片文件名")

        *!*  能不能指定在某一位置或區(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)?#8220; 9877” ,怎么解決?

      *!* 方法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("A1:E1").Select

      oExcel.Selection.NumberFormatLocal = "@"   &&把被選定的單元格設(shè)為文本格式

      oExcel.Cells(1,1).Value="0123"   &&給所選單元格覆值

      *!* 獲取 Excel 記錄數(shù)

      loXls = Createobject("excel.application")

      bookExcel = loXls.Application.Workbooks.Open("f:\pz.xls")

      nrows=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 即可。

      如果要在文件關(guān)閉時運行,則命名為auto_close 。

        *!* VFP中可以執(zhí)行EXCEL的選擇性粘貼嗎

      .Range("A2").PasteSpecial ("xlPasteValues") && 會出錯

      .Range("A2").PasteSpecial (3) && 也會出錯

      .Range("A2").PasteSpecial && 只好這樣了

        *!* 如何才能只粘貼值呢

      xlPasteValues=-4163

      oExcel.Range("A1").Select

      oExcel.Selection.Copy

      oExcel.Range("B1")._PasteSpecial(xlPasteValues)

      *注意:Excel 中,"xlPasteValues"是一個常量,它的值是一個數(shù)值型的:-4163

      oExcel.Range("A1").Copy

      oExcel.Range("B3").PasteSpecial(8) &&粘貼行、列寬

      oExcel.Range("B3").PasteSpecial(-4122) &&粘貼格式

       *!* 本程序通過將原dbf表拷成excel格式,然后導(dǎo)入并設(shè)置報表格式

      Para tablename

      Local hb1 As excel.Application

      Wait "正在導(dǎo)出數(shù)據(jù),請稍侯……" Window At 20,30 Timeout 1

      bhaveerror=.F. &&定義一個變量判斷是否發(fā)生錯誤

      Try

          hb1=Createobject("excel.application")

      Catch

          Messagebox("請檢查你是否已安裝microsoft excel應(yīng)用程序!",0,"提示")

          bhaveerror=.T.

      Endtry

      If bhaveerror=.T.

          Return

      Endif

      If Right(curr_path,1)<>'\'

          curr_path=curr_path+"\"

      Endif

      ctablename=tablename+"_excel"

      filepath=curr_path+"temp\sheet1.xls"

      *filepath="temp\sheet1.xls"

      If !File(filepath)

          Messagebox("數(shù)據(jù)源的excel文件未生成,報表生成被終止!")

          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).Select

      ****合并兩行作為報表標(biāo)題*************

      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.ShrinkToFit = .F. && ??

      HB1.Selection.MergeCells = .T. && ??

      HB1.Range(hbdygs).FormulaR 1C 1 = "請輸入報表標(biāo)題"

      HB1.Range(hbdygs).Characters.Font.Name = "隸書"

      HB1.Range(hbdygs).Characters.Font.FontStyle = "常規(guī)"

      HB1.Range(hbdygs).Characters.Font.ColorIndex = 1 &&字符顏色

      ***根據(jù)數(shù)據(jù)源表結(jié)構(gòu)的寬度設(shè)置列的寬度********

      Copy Stru Exte To temp\term_stru

      Sele 0

      Use temp\term_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

          Endif

          Sele (ctablename)

      Endfor

      Sele term_stru

      Use

      activecellname=Chr(nfieldcount+64)+Allt(Str(nreccount+3))

      *************設(shè)置數(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.BorderS(3).linestyle = .T.

      hb1.Selection.BorderS(4).linestyle = .T.

      hb1.ActiveWorkbook.SaveAs("c:\aa.xls")

      hb1.Application.Visible=.T.

      * HB1.ACTIVEWORKBOOK.SAVE &&自動保存數(shù)據(jù)

      * HB1.ACTIVEWORKBOOK.CLOSE &&關(guān)閉當(dāng)前工作簿

      * HB1.QUIT

       

      *!* 復(fù)制Sheet工作表

      EFILENAME='D:\你的Excel表名.XLS'

      oExcel=Createobject("Excel.application")

      oExcel.Workbooks.Open("&EFILENAME")

      oExcel.Visible=.T.

      oExcel.SHEETS(1).Select

      oExcel.SHEETS(1).Copy(Null,oExcel.SHEETS(1)) &&&&把第1個工作表復(fù)制到第1個工作表之后

      oExcel.SHEETS(2).Name='NewSheetName' &&設(shè)置第2個工作表名稱

      *!*oExcel.SHEETS(1).COPY(oExcel.SHEETS(1),NULL) &&&&把第1個工作表復(fù)制到第1個工作表之前

      *!*oExcel.SHEETS(1).NAME='NewSheetName' &&設(shè)置第1個工作表名稱

       

      *!* 如何將DBF中內(nèi)容COPYEXCEL的指定區(qū)域

      例如我有一個DBF:

      Name_F Sl_f

      Mike 546

      kyle 200

      想將這個內(nèi)容轉(zhuǎn)到EXCEL里面的E1:F2區(qū)域!

      Use 表名

      _vfp.DataToClip('表名',Reccount(),3) &&將一組記錄作為文本復(fù)制到剪貼板上,3使用制表符分隔字段。

      oexl=Createobject('excel.application') &&創(chuàng)建電子表格

      oexl.Visible=.T. &&使電子表格可見

      oexl.workbooks.Add &&創(chuàng)建工作簿

      With oexl

          .Range("E1:F2").Select &&根據(jù)你的表中的記錄數(shù)和字段數(shù)調(diào)整此項中的'F2'

          .ActiveSheet.Paste

      Endwith

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多