搜档网
当前位置:搜档网 › VFP全面控制EXCEL(完全版)

VFP全面控制EXCEL(完全版)

VFP全面控制EXCEL(完全版)
VFP全面控制EXCEL(完全版)

1.创建Excel对象

oExcel=Createobject("Excel.application")

2.添加新工作簿

oExcel.Workbooks.Add

3.设置第3个工作表为激活工作表

oExcel.Worksheets("sheet3").Activate

4.打开指定工作簿

oExcel.Workbooks.Open("c:\temp\ll.xls")

5.显示Excel窗口

oExcel.Visible=.T.

6.更改Excel标题栏

oExcel.Caption="VFP应用程序调用Microsoft Excel"

7.给单元格赋值

oExcel.cells(1,4).Value=XM(XM为数据库字段名)

8.设置指定列的宽度(单位:字符个数)

oExcel.ActiveSheet.Columns(1).ColumnWidth=5

9.设置指定行的高度(单位:磅)

oExcel.ActiveSheet.Rows(1).RowHeight=1&&(设定行高为1磅,1磅=0.035厘米)

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

10.在第18行之前插入分页符

oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1

11.在第4列之前删除分页符

oExcel.ActiveSheet.Columns(4).PageBreak=0

12.指定边框线宽度(Borders参数如下)

ole.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3

13.设置四个边框线条的类型

oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1

(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)

14.设置页眉

oExcel.ActiveSheet.PageSetup.CenterHeader="报表1"

15.设置页眉(字体大小)

oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后面的50可以自定义,表示字体的大小

16.设置页脚

oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页"

17.设置页脚(字体大小)

oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后面的28可以自定义,表示字体的大小

18.设置页眉到顶端边距为2厘米

oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.035

19.设置页脚到底边距为3厘米

oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.035

20.设置顶边距为2厘米

oExcel.ActiveSheet.PageSetup.TopMargin=2/0.035

21.设置底边距为4厘米

oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.035

22.设置左边距为2厘米

oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.035

23.设置右边距为2厘米

oExcel.ActiveSheet.PageSetup.RightMargin=2/0.035

24.设置页面水平居中

oExcel.ActiveSheet.PageSetup.CenterHorizontally=.T. 25.设置页面垂直居中

oExcel.ActiveSheet.PageSetup.CenterVertically=.T.

26.设置页面纸张大小(1-窄行8511 39-宽行1411 9:A4) oExcel.ActiveSheet.PageSetup.Papersize=1

27.打印单元格网线

oExcel.ActiveSheet.PageSetup.PrintGridlines=.T.

28.拷贝整个工作表

https://www.sodocs.net/doc/118400312.html,edRange.Copy

29.拷贝指定区域

oExcel.ActiveSheet.Range("A1:E2").Copy

30.粘贴

oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial 31.在第2行之前插入一行

oExcel.ActiveSheet.Rows(2).Insert

32.在第2列之前插入一列

oExcel.ActiveSheet.Columns(2).Insert

33.设置字体

oExcel.ActiveSheet.Cells(2,1)https://www.sodocs.net/doc/118400312.html,="黑体"

34.设置字体大小

oExcel.ActiveSheet.Cells(1,1).Font.Size=25

35.设置字体为斜体

oExcel.ActiveSheet.Cells(1,1).Font.Italic=.T.

36.设置整列字体为粗体

oExcel.ActiveSheet.Columns(1).Font.Bold=.T.

37.清除单元格公式

oExcel.ActiveSheet.Cells(1,4).ClearContents

38.打印预览工作表

oExcel.ActiveSheet.PrintPreview

39.打印输出工作表

oExcel.ActiveSheet.PrintOut

40. https://www.sodocs.net/doc/118400312.html,mandBars(1).Controls(1).accChild(18).Execute &&打印(菜单序号18为Excel2003的‘打印’项)

&&不同版本Excel的菜单序号可以通过以下程序取得

*(需要在VFP7.0以上运行)

oXls=Getobject("","excel.sheet")

XlApp=oXLS.Application

XlSheet=XlApp.ActiveSheet

bars=https://www.sodocs.net/doc/118400312.html,mandBars.Count

Str1=''

For i=1 To bars

Str1=Str1+Chr(13)+Alltrim(Str(i))+'、

'+https://www.sodocs.net/doc/118400312.html,mandBars(i).accName+'(NAME:'+https://www.sodocs.net/doc/118400312.html,mandBars(i).Name+'

INDEX:'+Alltrim(Str(https://www.sodocs.net/doc/118400312.html,mandBars(i).Index))+')'

bars2=https://www.sodocs.net/doc/118400312.html,mandbars(i).accChildCount

For j=1 To bars2

Try

obj=https://www.sodocs.net/doc/118400312.html,mandbars(i).Controls(j)

Str1=Str1+Chr(13)+' '+Alltrim(Str(j))+'、

'+https://www.sodocs.net/doc/118400312.html,mandbars(i).Controls(j).accname+'(ID:'+Alltrim(Str(https://www.sodocs.net/doc/118400312.html,mandBars(i).Controls( j).Id))+')'

For k=1 To obj.accChildCount

Try

If Not Empty(obj.Controls(k).accname )

Str1=Str1+Chr(13)+' '+Alltrim(Str(k))+'、'+obj.Controls(k).accName+' (ID:'+ Alltrim(Str(obj.Controls(k).Id))+')'

Endif

Catch

Exit

Endtry

Endfor

Catch

Exit

Endtry

Endfor

Wait Windows Alltrim(Str(i))+' / '+Alltrim(Str(bars))+' '+Str(i/bars*100,10,2)+'%' Nowait Endfor

Save To Xls.txt All Like Str1

Modify Command Xls.txt

Return

41.工作表另存为

oExcel.ActiveWorkbook.SaveAs("c:\temp\22.xls")

*检测当前目录是否有同名的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

42.放弃存盘 && 避免出现保存对话框

oExcel.ActiveWorkbook.saved=.T.

43.存盘

oExcel.ActiveWorkbook.Save

44.关闭工作簿

oExcel.Workbooks.Close

objexcel.activeworkbook.Close(.F.)

45.退出Excel

oExcel.Quit

Release oExcel &&只有释放对象变量, EXCEL进程才会完全关闭

46.合并单元格

oExcel.ActiveSheet.Range("A4:B5").MergeCells=.T.

47.下列设置大家自己理解

With crfole.ActiveSheet.PageSetup

.LeftHeader = Chr(13)+"左页眉"

.CenterHeader = "中页眉"

.RightHeader = "右页眉"

.LeftFooter = "左页脚"

.CenterFooter = "中页脚"

.RightFooter = "右页脚"

.Orientation=1 &&1竖排,2横排

Endwith

With crfole.Range("A4:C4")

.MergeCells = .T.

.WrapText =.F.

.Orientation = 0

.AddIndent =.F.

.ShrinkToFit = .F.

Endwith

48.文本对齐

oExcel.Range("A4:c4").HorizontalAlignment =1 &&水平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐)

oExcel.Range("A4:c4").VerticalAlignment =2 &&垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)

49.拷贝整个工作表(含格式)

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列的值

*以上控制调用语句在中文VFP5.0企业版下运行通过,运行环境为Excel 97及中文Windows 98 50.显示某个单元格的批注内容

oExcel=Createobject("Excel.application")

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

oExcel.Visible=.T.

?oExcel.Range("B5").Comment.Text &&显示B5单元格的批注内容

oExcel.Workbooks.Close

oExcel.Quit

Release oExcel

51.oExcel.ActiveSheet.PageSetup.PrintTitleRows="$1:$1" &&每页都打印行标头(每页顶部出现的单元格的行)

52.保护工作表:

oExcel.ActiveSheet.Protect('密码

',.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.)

53.保护工作薄

oExcel.ActiveWorkbook.Protect('密码',.T.,.T.)

第一个.T.:保护工作簿结构

第二个.T.:保护工作簿窗口

54.设置允许用户编辑区域

oExcel.ActiveSheet.Protection.AllowEditRanges.Add("区域3",oExcel.ActiveSheet.Range("A2:D5"))

55.如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,就将本属性设置为.F.

oExcel.DisplayAlerts = .F.

如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,就将本属性设置为 False;这样每次出现需用户应答的消息时,Microsoft Excel 将选择默认应答。

如果将本属性设置为 False,那么宏运行结束后, Microsoft Excel 并不自动将其设置回 True。故当宏运行结束后,都应将本属性设置回 True 值。

56.将当前工作表中的已用区域(只读)存入数组。

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

Local oExcel

oExcel=Createobject("Excel.Application")

oExcel.WorkBooks.Open(strPath)

arrTableInfo=https://www.sodocs.net/doc/118400312.html,edRange.Value &&将当前工作表中的已用区域(只读)存入数组。

oExcel.Quit

Release oExcel

Insert Into 表名 From arrTableInfo

57.设置excel批注的字体(excel 2000实现了,如下:)

ole.Range("a3").Comment.Shape.Select && 此命令要求批注的 Visible=.T.

ole.Selection.Font.Size=9

https://www.sodocs.net/doc/118400312.html,="黑体"

ole.Selection.Font.bold=.F.

注:该组命令要求先选中批注框,否则写成 ole.Range("a3").Comment.Shape.Font.Size=9 则出错,不知为何!

58.如何取得当前EXCEL表中工作表的数目及各工作表的名称?

Clear

Local lnSheetCount

oExcel=Createobject("EXCEL.APPLICATION") &&创建Excel对象

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

With oExcel

lnSheetCount=.WorkBooks(1).Sheets.Count &&统计工作表数量

Endwith

?'当前EXCEL表中工作表的数目为:'+Alltrim(Str(lnSheetCount))

For Each oMyVar In oExcel.sheets

?'当前EXCEL表中工作表的名称分别为'+https://www.sodocs.net/doc/118400312.html, &&显示Excel表中所有工作表

Next oMyVar

oExcel.WORKBOOKS.Close &&关闭工作簿

oExcel.Quit &&退出Excel

59.获取工作表名称

在以下示例中,创建了一个 microsoft excel 实例,添加了一个新的工作簿。使用 foreach 语句显示工作簿中每个工作表的名称。此示例要求在运行示例的机器上正确安装 microsoft excel。

oExcel = Create("Excel.Application")

oExcel.Workbooks.Add

For Each oMyVar In oExcel.sheets

? https://www.sodocs.net/doc/118400312.html,

Next oMyVar

60.虽然用APPEND From tx.Xls Type XL8可以更简单的追加数据,但有时会导致程序非法错误退出(除非先另存为Excel 5.0)

61.VFP控制EXCL文件另存为DBF(EXCEL后台运行)

fil=Thisform.List1.Value &&其值为一个包含路径的文件名

oExcel=Createobject('Excel.application')

oExcel.Workbooks.Open(fil) &&打开文件

oExcel.Selection.AutoFilter &&关闭(如果无则打开)自动筛选

oExcel.Range("A1:F1000").Select &&选中从第1行到1000行的前6列数据(另存后只有这些数据) asfil=Strtran(Upper(Strtran(fil,Substr(fil,1,Rat('\',fil)),'c:\windows\desktop\cphz\')), '.XLS','.dbf') &&要保存的文件名

If File(asfil)

Delete File &asfil

Endif

oExcel.ActiveWorkbook.SaveAs(asfil,8) &&另存为DBF

oExcel.ActiveWorkbook.saved=.T. &&不保存当前EXCEL表

oExcel.Workbooks.Close &&关闭表

oExcel.Quit &&退出EXCEL

Release oExcel &&释放变量

*************VFP中例子******************

lcFileName='D:\TEST.XLS'

oExcel=Createobject('Excel.application')

oExcel.Workbooks.Open('&lcFileName') &&打开文件

R=oExcel.SHEETS(1).UsedRange.Rows.Count &&有数据的总行数

C=oExcel.SHEETS(1).UsedRange.Columns.Count &&有数据的总列数

oExcel.Cells(R,C).Select &&选中数据

oExcel.Selection.NumberFormatLocal = "@" &&把被选定的单元格设为文本格式

oExcel.Columns.AutoFit &&让所有的列宽都自动调整

oExcel.DisplayAlerts=.F.

oExcel.ActiveWorkbook.SaveAs('D:\TEST.DBF',8) &&另存为DBF

*oExcel.ActiveWorkbook.SaveAs('D:\NewTest.xls',39) &&另存为5.0的Excel,或用43表示95/97格式

oExcel.ActiveWorkbook.saved=.T. &&不保存当前EXCEL表

oExcel.Workbooks.Close &&关闭表

oExcel.Quit &&退出EXCEL

Release oExcel &&释放变量

Messagebox('Excel文件:D:\TEST.XLS 另存为 D:\TEST.DBF 完成!',64,'信息提示')

***********VB例子*************

'功能:VB调用Excel,将一个Excel文件另存为Dbf。'

'前提:要安装Excel'

Dim oExcel As Object

lcSFileName = "D:\test.xls" '源Excel文件名

lcDFileName = "D:\test1.dbf" '目标Dbf文件名

Set oExcel = Createobject("Excel.Application") '创建Excel对象

oExcel.Workbooks.Open (lcSFileName) '打开Excel表

*R = oExcel.SHEETS(1).UsedRange.ROWS.Count '有数据的总行数

*C = oExcel.SHEETS(1).UsedRange.Columns.Count '有数据的总列数

*oExcel.Cells(R, C).Select '选中数据

*oExcel.Columns.AutoFit '让所有的列宽都自动调整

oExcel.DisplayAlerts = Flase '不显示提示框

oExcel.ActiveWorkbook.SaveAs FileName:=lcDFileName, FileFormat:=8

oExcel.ActiveWorkbook.saved = Ture '不保存当前EXCEL表

oExcel.Workbooks.Close '关闭表

oExcel.Quit '退出EXCEL

Set oExcel = Nothing '释放对象

MsgBox ("Excel文件: " & lcSFileName & " 另存为 " & lcDFileName & " 完成!")

62.VFP用ADO连接Excel,然后将Excel内容导出DBF的方法

*--以下代码是将123.XLS中的SHEET5中的内容转换成RR.DBF

oConnection = Createobject("adodb.connection") &&建立连接对象

With oConnection

.ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=d:\temp\123.xls;Extended Properties="excel 8.0;HDR=YES;IMEX=1;";Persist Security Info=False'

.Open

Endwith

oConnection.EXECUTE('select * into [dBase III;DataBase=d:\temp].rr from [sheet5$]') oConnection.Close

63.设置打印参数:

用Excel做报表,可打印时怎么选择打印机,即.ActiveWindow.SelectedSheets.PrintOut的参数有哪些?Expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)

Expression 必选。该表达式返回“应用于”列表中的某个对象。

From Variant 类型,可选。打印的开始页号。如果省略该参数,将从起始位置开始打印。

To Variant 类型,可选。打印的终止页号。如果省略该参数,将打印至最后一页。

Copies Variant 类型,可选。要打印的份数。如果省略该参数,将只打印一份。

Preview Variant 类型,可选。如果为 True 则 Microsoft Excel 打印指定对象之前进行打印预览。如果为 False,或者省略此参数则立即打印该对象。

ActivePrinter Variant 类型,可选。设置活动打印机的名称。

PrintToFile Variant 类型,可选。如果为 True 则打印输出到文件。如果没有指定 PrToFileName,则Microsoft Excel 将提示用户输入要输出文件的文件名。

Collate Variant 类型,可选。如果为 True 则逐份打印每份副本。

PrToFileName 可选,Variant 类型。如果将 PrintToFile 设置为 True,则本参数指定要打印到的文件名。说明

From 参数和 To 参数所描述的“页”指的是要打印的页,并非指定工作表或工作簿中的全部页。

64.如何用编程的方法打开有密码的Excel文件?

*Excel文件加了密码,如何在VFP中用编程的方式把密码输入,使Excel文件打开

oExcel=Createobject('Excel.application')

oExcel.Workbooks.Open("d:\22.xls")这样还有一个密码的对话框出来,需要输入密码才能打开文件。

65.如何用编程的方法直接打开有密码的Excel文件?

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

"123"表示打开权限的密码,

"456"表示修改权限的密码.

66.如何将一个已知路径的图片插入到excel中.

oexcel1.ActiveSheet.PictureS.Insert("图片文件名")

67.能不能指定在某一位置或区域放置图片并控制图片显示大小呢?

OLEAPP.SHEETS(1).Select

oleapp.Range("位置").Select

oleapp.ActiveSheet.PictureS.Insert("图片文件名")).Select

oleapp.Selection.ShapeRange.LockAspectRatio =.T.

oleapp.Selection.ShapeRange.Height = 57

68.类型为字符型的字段输出到excel 中,前面的零被自动去掉,例如“009877”变为“9877”,怎么解决?

1.在字符串前面加半角单引号“ ' ”,

例如:

o.Cells(1,1).Value="'0123"

或用变量

cString="'"+"0123" &&其中0123可以取自表中一个字段

o.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 = "@" &&把被选定的单元格设为文本格式

oExcel.Cells(1,1).Value="0123" &&给所选单元格覆值

69.在 Excel 中插入行和列 :

objExcel.Rows(1).Insert() &&在第一行前面插入一行

objExcel.Columns(2).Insert() &&在第二列前面插入一列

70.获取 Excel 记录数

loXls = Createobject("excel.application")

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

nrows=bookExcel.Worksheets('pz')

UsedRange =https://www.sodocs.net/doc/118400312.html,edRange

r=UsedRange.Rows.Count &&有数据的总行数

c=UsedRange.Columns.Count &&有数据的总列数

loXls.Workbooks.Close

loXls.Quit

71.在EXCEL中如何在打开文件的同时自动执行一个宏命令。

只要将宏的命名为 AUTO_OPEN 即可。

如果要在文件关闭时运行,则命名为auto_close 。

72.在VFP中可以执行EXCEL的选择性粘贴吗?

.Range("A2").PasteSpecial ("xlPasteValues") && 会出错

.Range("A2").PasteSpecial (3) && 也会出错

.Range("A2").PasteSpecial && 只好这样了

73.如何才能只粘贴值呢?

xlPasteValues=-4163

oExcel.Range("A1").Select

oExcel.Selection.Copy

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

*注意:在Excel 中,"xlPasteValues"是一个常量,它的值是一个数值型的:-4163 oExcel.Range("A1").Copy

oExcel.Range("B3").PasteSpecial(8) &&粘贴行、列宽

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

74.如何从excel读取数据

*******建立一个excel对象*******

Local hb1 As excel.Application

csheetname=Trim(Thisform.text2.Value)&&读取用户要读取excel的sheet名

***读取数据源所在的EXCEL文件名****

If Empty(Trim(Thisformset.filepath))

Messagebox("请先选择要导入的excel文件!",0,"提示")

Return

Endif

If Empty(Trim(csheetname))

Messagebox("请先选择要导入的工作表sheet名称!",0,"提示")

Return

Endif

Try

hb1=Createobject("excel.application")

Catch

Messagebox("请检查你是否已安装microsoft excel应用程序!",0,"提示") Endtry

***打开EXCEL对象,开始读取数据********

HB1.workbooks.Open(Trim(Thisformset.filepath))

hb1.Sheets(csheetname).Select

Sele Store&&这是要读取的数据存放的表

Zap

isend=.F. &&用于判断是否记录已到底

i=1

Do While isend=.F.

Append Blank

crq=Dtoc(drq)

cdh=hb1.Cells(i,1).Value

If Isnull(cdh)

cdh=""

Endif

**用于判断数据类型,数据类型一定要判断是否为NULL,**

** 然后如果不是指定的类型,还要进行转换*************

If Type("cdh")<>'C'

cdh=Alltrim(Str(cdh))

Endif

cdwmc=Trim(hb1.Cells(i,2).Value)

If Isnull(cdwmc)

cdwmc=""

Endif

cgg=hb1.Cells(i,3).Value

If Isnull(cgg)

cgg=""

Else

If Type("cgg")<>'C'

cgg=Alltrim(Str(cgg))

Endif

Endif

cjldw=hb1.Cells(i,4).Value

If Isnull(cjldw)

cjldw=""

Endif

cjldw=Iif(Type("jldw")<>"C",Alltrim(Str(cjldw)),Alltrim(cjldw)) nsl=hb1.Cells(i,5).Value

If Isnull(nsl)

nsl=0

Endif

cch=Trim(hb1.Cells(i,6).Value)

If Isnull(cch)

cch=''

Endif

cxh=hb1.Cells(i,8).Value

If Isnull(cxh)

cxh=""

Else

If Type("cxh")<>'C'

cxh=Trim(Str(cxh))

Else

cxh=Trim(cxh)

Endif

Endif

ccpmc=hb1.Cells(i,9).Value

If Isnull(ccpmc)

ccpmc=''

Endif

If Type("ccpmc")<>'C'

ccpmc=Alltrim(Str(ccpmc))

Else

ccpmc=Trim(ccpmc)

Endif

Select Store

Replace rq With crq,dh With cdh,dwmc With cdwmc,gg With cgg,jldw With cjldw,sl With nsl,ch With cch,cpbh With cxh,cpmc With ccpmc

i=i+1

&&如果一行全为空,记作记录到底,如果中间存在多行的问题,我没有做考虑****

If Empty(cxh) And nsl=0 And Empty(cch) And Empty(cjldw) And Empty(cdh) And Empty(cgg) isend=.T.

Endif

Enddo

Dele &&最后一行为空行,删除

Wait "共转换得到"+Alltrim(Str(Reccount()))+"条记录!" Window Timeout 2

hb1.Quit

75.本程序通过将原dbf表拷成excel格式,然后导入并设置报表格式

Para tablename

Local hb1 As excel.Application

Wait "正在导出数据,请稍侯……" Window At 20,30 Timeout 1

bhaveerror=.F. &&定义一个变量判断是否发生错误

Try

hb1=Createobject("excel.application")

Catch

Messagebox("请检查你是否已安装microsoft excel应用程序!",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("数据源的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

****合并两行作为报表标题*************

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).FormulaR1C1 = "请输入报表标题"

HB1.Range(hbdygs)https://www.sodocs.net/doc/118400312.html, = "隶书"

HB1.Range(hbdygs).Characters.Font.FontStyle = "常规"

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

***根据数据源表结构的宽度设置列的宽度********

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

*************设置数据区域的字体格式***************

HB1.Range("A3:"+activecellname)https://www.sodocs.net/doc/118400312.html, = "宋体"

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 &&自动保存数据

* HB1.ACTIVEWORKBOOK.CLOSE &&关闭当前工作簿

* HB1.QUIT

76.如何修改sheet工作表名:

EFILENAME='D:\TEST\TEMPA.XLS'

oExcel=Createobject("Excel.application")

oExcel.Workbooks.Open("&EFILENAME")

oExcel.Visible=.T.

oExcel.Worksheets("Sheet2").Select

oExcel.Worksheets("Sheet2").Name='NewSheet' &&这里的NewSheet为新的名字。

77.复制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个工作表复制到第1个工作表之后oExcel.SHEETS(2).Name='NewSheetName' &&设置第2个工作表名称

*!*oExcel.SHEETS(1).COPY(oExcel.SHEETS(1),NULL) &&&&把第1个工作表复制到第1个工作表之前*!*oExcel.SHEETS(1).NAME='NewSheetName' &&设置第1个工作表名称

78.如何将DBF中内容COPY到EXCEL的指定区域

例如我有一个DBF:

Name_F Sl_f

Mike 546

kyle 200

想将这个内容转到EXCEL里面的E1:F2区域!

Use 表名

_vfp.DataToClip('表名',Reccount(),3) &&将一组记录作为文本复制到剪贴板上,3使用制表符分隔字段。

oexl=Createobject('excel.application') &&创建电子表格

oexl.Visible=.T. &&使电子表格可见

oexl.workbooks.Add &&创建工作簿

With oexl

.Range("E1:F2").Select &&根据你的表中的记录数和字段数调整此项中的'F2'

.ActiveSheet.Paste

Endwith

79.VFP调用EXCEL查询打印示例

EFILENAME='查询打印.XLS'

*LOCAL oExcel

oExcel=Createobject("Excel.application")

oExcel.Workbooks.Open("&EFILENAME")

oExcel.Caption="VFP应用程序调用Microsoft Excel"

oExcel.Worksheets("查询打印").Activate

oExcel.Visible=.T.

nRows=oExcel.Worksheets('查询打印').UsedRange.Rows.Count

nColumns=oExcel.Worksheets('查询打印').UsedRange.Columns.Count

oExcel.Range(oExcel.Cells(1,1),oExcel.Cells(nRows,nColumns)).BorderS.LineStyle=1 oExcel.Range(oExcel.Cells(1,1),oExcel.Cells(nRows,nColumns)).HorizontalAlignment=3 &&水平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐) oExcel.Range(oExcel.Cells(1,1),oExcel.Cells(nRows,nColumns)).VerticalAlignment=2 &&垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)

oExcel.ActiveSheet.PageSetup.RightFooter="第&P页 / 共&N页"

oExcel.ActiveSheet.PageSetup.TopMargin=2/0.035 &&设置顶边距为2厘米

oExcel.ActiveSheet.PageSetup.BottomMargin=2/0.035 &&设置左边距为2厘米

oExcel.ActiveSheet.PageSetup.HeaderMargin=1/0.035 &&设置页眉到顶端边距为1厘米

oExcel.ActiveSheet.PageSetup.FooterMargin=1/0.035 &&设置页脚到底边距为1厘米

oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.035 &&设置左边距为2厘米

oExcel.ActiveSheet.PageSetup.RightMargin=2/0.035 &&设置右边距为2厘米

oExcel.ActiveSheet.PageSetup.CenterHorizontally=.T. &&设置页面水平居中

oExcel.ActiveSheet.PageSetup.CenterVertically=.T. &&设置页面垂直居中

oExcel.ActiveSheet.PageSetup.Zoom=90 &&缩放90%

oExcel.Cells.Select

oExcel.Cells.EntireColumn.AutoFit

oExcel.Selection.AutoFilter

oExcel.ActiveSheet.Rows(1).Insert

oExcel.Range("A2:BB2").RowHeight=37.5

oExcel.Range("A2:BB2").WrapText=.T.

oExcel.ActiveSheet.Columns(1).ColumnWidth=3

oExcel.ActiveSheet.Columns(1).ColumnWidth=4

oExcel.Range("A2:BB2").RowHeight=12.5

*oExcel.RANGE("M1").VALUE='统计月份:'+ALLTRIM(STR(YEAR(KKS_DATE1)))+'年

'+ALLTRIM(STR(MONTH(KKS_DATE1)))+'月 - '+ALLTRIM(STR(YEAR(KKE_DATE1)))+'年

'+ALLTRIM(STR(MONTH(KKE_DATE1)))+'月'

oExcel.ActiveSheet.PageSetup.CenterHeader="&20部门出勤统计表"

oExcel.ActiveSheet.PageSetup.CenterFooter="单位领导:"

oExcel.ActiveSheet.PageSetup.LeftFooter="打印时间:&D - &T"

oExcel.Selection.AutoFilter

oExcel.ActiveSheet.Range('B2').Select

oExcel.ActiveSheet.PageSetup.PrintTitleRows="$1:$1"

oExcel.ActiveSheet.PageSetup.Orientation=2 && 1:纵向打印 2:横向打印

oExcel.ActiveWorkbook.Save

80.Excel报表巧生成

巧让FoxPro数据生成Excel报表

Visual FoxPro是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到DBF数据文件。然而随着办公自动化的普及,越来越多的时候需要将DBF文件转化为Excel电子文档。常用转化方法是在FoxPro中用Copy命令进行格式转化或直接用Excel打开DBF文件。这两种方式虽然都能达到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的Excel文件中,无法对数据类型进行有效转换,极易出现数据统计错误。有没有更好的方法呢?这里有一个更加通用的方法,在VFP 中调用Excel,可以由DBF文件直接生成格式如下图所示一样复杂的Excel报表(如图1)。 Excel报表

具体过程如下:

编辑推荐文章

● 新鲜接触Excel 2000 XP

● Excel 2000公式应用的几条经验

● Excel 2000函数应用之信息函数

假设我们要将表Agcallop.dbf文件输出为Excel格式文档,报表形如图1所示。为使通用性更强,页面采用A4纸横向输出,默认字体为宋体10号,页脚处添加页号。

部分程序代码如下:

m.outfilename=Putfile('输出结果','agcallop','xls')&&取导出文件名称

ef=Createobject('Excel.application')&&调用Excel程序

ef.Workbooks.Add&&添加工作簿

ef.Worksheets("sheet1").Activate&&激活第一个工作表

ef.Visible=.T.&&显示Excel界面

ef.Cells.Select&&选择整张表

ef.Selection.Font.Size = 10&&设置整表默认字体大小为10

Select 0

Use agcallop&&选择被导出的表

num=Reccount()&&求导出总记录数

Go Top

i=5

ef.Range("F1:K1").Select&&选择标题栏所在单元格

ef.Selection.Merge&&合并单元格

With ef.Range("F1 ") &&设置标题及字体属性

.Value='客户服务部业务代表工作量情况统计表'

https://www.sodocs.net/doc/118400312.html,="黑体"

.Font.Size=18

Endwith

ef.Rows(2).RowHeight=1/0.035&&设置第二行高度为1cm

ef.Range("H2:O2").Select&&选定统计条件栏所在单元格

ef.Selection.Merge&&合并单元格

ef.Range("H2").Font.Size=10

ef.Range("H2").HorizontalAlignment=4&&设置内容对齐方式为右对齐,3为居中,4为右对齐

ef.Range("H2").Value='统计时间:'+Dtoc(Date())+' 打印日期:'+Dtoc(Date())

ef.Rows("3:4").Select

With ef.Selection

.HorizontalAlignment = 3 &&设置3、4行为水平对齐

.VerticalAlignment = 2 &&垂直居中

.NumberFormatLocal = "@" &&设置3、4行为字符型内容

Endwith

ef.Range("A3:A4").Select

ef.Selection.Merge&&纵向合并第一列3、4行

ef.Range("A3").Value='工号'&&设置第一列标题内容

ef.Columns("A").Select&&整列选择

ef.Selection.HorizontalAlignment = 3&&水平居中

ef.Columns("A:B").Select

ef.Selection.NumberFormatLocal = "@"&&设置A、B列为字符型内容

ef.Range("B3:B4").Select

ef.Selection.Merge&&纵向合并第二列3、4行

ef.Range("B3").Value='姓名'&&设置第二列标题内容

ef.Columns("B").Select&&整列选择

ef.Selection.HorizontalAlignment = 3&&水平居中

ef.Range("C3:E3").Select&&横向合并第三行C-E列

ef.Selection.Merge

ef.Range("C3").Value='话务总量'&&第三行大标题为“话务总量”的列

ef.Range("C4").Value='电话呼入量'&&“话务总量”下第1个小标题“电话呼入量”ef.Range("D4").Value='电话呼出量'&&“话务总量”下第2个小标题“电话呼出量”ef.Range("E4").Value='合计'&&“话务总量”下第3个小标题“合计”

ef.Range("F3:H3").Select

ef.Selection.Merge

ef.Range("F3").Value='话务总时间'

ef.Range("F4").Value='呼入时间'

ef.Range("G4").Value='呼出时间'

ef.Range("H4").Value='合计'

ef.Range("I3:K3").Select

ef.Selection.Merge

ef.Range("I3").Value='单个话务平均时间'

ef.Range("I4").Value='呼入时间'

ef.Range("J4").Value='呼出时间'

ef.Range("K4").Value='合计'

ef.Range("L3:L4").Select

ef.Selection.Merge

ef.Range("L3").Value='累计工作时间'

ef.Range("M3:M4").Select

ef.Selection.Merge

ef.Range("M3").Value='无效时间'

ef.Range("N3:N4").Select

ef.Selection.Merge

ef.Range("N3").Value='录入量'

ef.Range("O3:O4").Select

ef.Selection.Merge

ef.Range("O3").Value='有效时间比'

接下来通过scan语句,依次为每一行每一列单元格赋值。为了获得更好的打印效果,还需进行页面设置,如标题行、页面居中、横向排版等,还可以加边框线。

以上程序在VFP 6+Excel 2000+Windows 2000下调试通过。实际应用中可根据需要对各项参数设置进行相应调整。

81.实用的VFP与EXCEL交互编程

摘要:本文介绍了几种实用的VFP与EXCEL交互编程的方法与实例,将VFP强大的数据处理功能与EXCEL优异的制表功能有机地结合起来,大大增强了软件的应用效果。

关键词:VFP、EXCEL、DDE、OLE、交互编程。

Some Cross_Programming Methods Between VFP And EXCEL

Zou yiming(Gansu Lanzhou Section Of Instruments Lanzhou Petrochemical Staff College) Abstract: The author introduces us In This Paper Some practical methods And instance Of cross_programming Between VFP And EXCEL . It extremely improves their performances By combining VFP's data processing functions with EXCEL's excellent tabulation functions.

Key Words: VFP、EXCEL、OLE、DDE、Cross-Programming

VFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员的强有力工具,而EXECL则是一种优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势。上述两种软件在各自的应用领域均得到广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。

本文将结合具体实例介绍几种VFP与EXCEL交互编程的方法,每种方法虽然实现手段各异,但功能相仿。其功能可简述如下:VFP数据表“学生成绩表.DBF”中含“学生姓名”、“语文”、“数学”......等字段,示例程序将从EXCEL工作簿“VFP交互.XLS”之工作表“查询”中用书签“课程名”指定的单元取得欲查询的课程名称,然后在数据表“学生成绩表.DBF”中自动搜索,以找到该门课程不及格的同学名单,最后传送至原EXCEL工作薄形成新的工作表单,同时,新工作表还将以该课程名命名。

下列程序均在VFP5.0与EXCEL97中调试通过。因篇幅所限,程序中的错误处理部分略去。

一、EXECL驱动VFP

EXECL内置的VBA语言(Visual Basic For Application)为EXECL功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。

程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP摸索命令串,其摸索结果再借助于VFP 的DateToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置。

Sub FoxTest()

Dim oFox As Object

Dim SLesson As String

Dim SCommand As String

Set oFox = Createobject("VisualFoxPro.Application") '启动VFP,生成VFP对象

Sheets("查询").Select

SLesson = Range("课程名") '在名为“课程名”的单元格中得到欲查询的课程名称

Sheets.Add '产生新的工作表单

https://www.sodocs.net/doc/118400312.html, = Slesson '指定工作表单的名称与课程名称相同

SCommand = "SELECT 学号,语文,数学 FROM d:\vfp\学生成绩表 WHERE "+ SLesson + "<60 INTO CURSOR TEMP" '形成VFP查询命令串

oFox.DoCmd Scommand '执行VFP命令串

oFox.DataToClip "temp", , 3 '将搜索结果以文本方式拷贝至剪切板

Range("a1:a1").Select '指向拷贝目标区域左上角单元

ActiveSheet.Paste '粘贴搜索结果

End Sub

为便于使用,作者在EXECL中自制了一名为“搜索”的工具栏及一名为“开始搜索”的按钮,并将上述宏程序段与自制按钮相关联,按下此按钮即可运行程序并在EXCEL中得到要求的数据。

制作工具栏及按钮的方法如下:

1. 选“工具”/“自定义”菜单,出现自定义对话框;

2. 选择“工具栏”页框,然后按下“新建”按钮;

3. 在工具栏对话框中输入“搜索”作为新建工具栏的名称;

4. 选择“命令”页框,在“类别”列表中选“宏”,在“命令”列表中选“自定义按钮”并将其拖放至新建的“搜索”工具栏;

5. 按下“更新所选内容”按钮,首先在“命名”栏中填入按钮名称“开始搜索”,然后选择“指定宏”,在随后出现的“指定宏”列表中选择上述宏程序FoxTest()即可实现为该宏指定一个工具栏按钮。

二、VFP使用OLE功能驱动EXECL

OLE(Object Linking and Embedding)对象链接与嵌入,是WINDOWS应用程序间相互传递和共享数据的一种有效方法。VFP借助于OLE不仅可共享其它应用程序的数据,而且还能以对象方式直接控制其它应用程序的运行,从而进一步扩展VFP的功能。VFP支持直接在程序中创建、使用和控制OLE

对象,实现OLE自动化。作为OLE客户VFP与作为OLE服务器的EXCEL具有良好的编程接口,下述程序段用OLE方式实现所要求的功能。

程序首先生成一个EXCEL的OLE对象OleApp以便对其进行操作,然后利用OLE功能从EXCEL表单中获取欲查询的课程名,并控制EXCEL生成新的工作表,VFP的查询结果仍然使用剪切板的方式传递至EXCEL 工作表。

OleApp=Createobject("Excel.Application") && 打开EXCEL,产生OLE对象

OleApp.Application.Caption="VFP交互编程" && 指定标题栏名称

OleApp.Application.Visible=.T. && 置EXCEL可见

OleApp.Application.WorkBooks.Open("d:\vfp\VFP交互.xls") && 打开EXCEL工作簿

Do While .T.

With OleApp.Application

nAnswer = Messagebox("开始搜索?", 32+4, "搜索指定数据") &&产生信息框

If (.Not.(nAnswer=6)) && 如按下“Yes"按钮,则开始搜索,反之退出

Exit

Endif

.Sheets("查询").Select && 选择“查询”工作表单

SLesson = OleApp.Application.Range("课程名").Value && 得到欲查询的课程名称

.Sheets.Add && 新建一工作表单

https://www.sodocs.net/doc/118400312.html, = Slesson && 指定工作表单的名称

SCommand = "SELECT 学号,语文,数学 FROM d:\vfp\学生成绩表 WHERE " +Alltrim(SLesson) + "<60 INTO CURSOR TEMP" && 形成VFP查询命令串

&Scommand && 执行VFP命令串

_vfp.DataToClip("TEMP",,3) && 将搜索结果以文本方式拷贝至剪切板

.Range("a1:a1").Select && 指向拷贝目标区域左上角单元

.ActiveSheet.Paste && 粘贴搜索结果

Endwith

Enddo

OleApp.Quit && 关闭EXCEL,保存更新后的工作簿文件

82.在VFP中Disabled/Enabled EXCEL中的菜单项及按钮

有时需要在VFP中控制EXCEL中的按钮及菜单项,以达到由VFP控制XLS文档的目的。可以控制XLS文档不能复制、不能另存、不能打印、不能以附档的形式发邮件。结合陆老师的在通用字段中存放文档的思路,完全可以用VFP开发文档发布系统,可以发布公司的守则、公告、管理办法、机密资料、图片资料等而不用担心用户复制、打印、以邮件传播资料。XLS中各个菜单项或按钮都有唯一的ID或序号,本例是利用序号来控制的(利用ID也可以控制)。对象大多只有三层,对应的控制方法是:对象.CommandBars(第一层序号).Controls(第二层序号).accChild(第二层序号).属性=值本例仅列出菜单项的部分控制,其它菜单项或按钮的序号可以程序取得,此程序参考本文章开头第40条

oXLS=Createobject('excel.application')

oXLS.Workbooks.Add

oXLS.Visible=.T.

1、工作表功能表列(Name:Worksheet Menu Bar Id:1) &&禁用/不可见系统菜单

https://www.sodocs.net/doc/118400312.html,mandbars(1).Enabled=.F.

1、档案(Id:30002) &&禁用菜单中的“档案”项 https://www.sodocs.net/doc/118400312.html,mandbars(1).controls(1).enabled=.f.

12、打印... (ID:4) &&禁用“档案”菜单下的“打印”项

https://www.sodocs.net/doc/118400312.html,mandBars(1).Controls(1).accChild(18).Enabled=.F.

vfp直接读取EXCEL文件示例

vfp直接读取EXCEL文件示例 vfp直接读取EXCEL文件的示例(转)。 M_File=GETFILE('xls','订单文件') IF M_File="" =MESSAGEBOX("请选择待导入的收订单文件!",0+48,"提示") RETURN ELSE IF JUSTEXT(M_FILE)#"XLS" &&获得文件扩展名 =MESSAGEBOX("您选择的不是EXCEL文档!",0+48,"提示") RETURN ENDIF ENDIF USE 图书订单表 ZAP myexcel=createobject('excel.application') &&创建一个对象 myexcel.visible=.f.&&不可见 bookexcel=myexcel.workbooks.open(M_File) &&打开指定文件 o_SheetName=https://www.sodocs.net/doc/118400312.html,&&获取当前激活工作表的名称UsedRange =bookexcel.worksheets(o_SheetName).UsedRange&&返回工作表中可使用的区域,UsedRange表的属性 o_rows=UsedRange.rows.count&&汇总行 o_cols=UsedRange.columns.count&&汇总列 IF o_rows<=1 =MESSAGEBOX("待导入数据行数太少,请检查!",0+16,"提示") ELSE FOR i=2 TO o_rows m1=myexcel.cells(i,1).value &&书号 m2=myexcel.cells(i,2).value &&书名 m3=myexcel.cells(i,3).value &&出版社 m4=myexcel.cells(i,4).value &&作者 m5=myexcel.cells(i,5).value &&定价 m6=myexcel.cells(i,6).value &&数量 APPEND BLANK REPLACE 书号WITH m1,书名WITH m2,出版社WITH m3,作者WITH m4,定价WITH m5,数量WITH m6 ENDFOR ENDIF myexcel.workbooks.close&&关闭工作区 myexcel.quit&&关闭excel brow

在VFP中直接来控制Excel

Example: SET DEFAULT TO c:\ clear oleapp=createobject("excel.application") oleapp.visible=.t. && 显示Excel oleapp.workbooks.add **设单元格的值(报表标题): oleapp.cells(1,1).value="aaa" oleapp.cells(1,2).value="bbb" oleapp.cells(1,3).value="ccc" oleapp.cells(1,4).value="ddd" oleapp.cells(1,5).value="eee" **打开表并取得记录数 USE c:\bank\data\zyb.dbf SHARED jl=reccount()-1 &&记录数 **将表中的记录数据放到Excel工作簿的单元格中 for i=0 to jl go i+1 &&第i+1条记录 oleapp.cells(2+i,1).value=zyb.bh oleapp.cells(2+i,2).value=zyb.xm oleapp.cells(2+i,3).value=zyb.kl oleapp.cells(2+i,4).value=1+1 endfor oleapp.activeworkbook.saveas("C:\Documents and Settings\Administrator\桌面\KL.xls") * oleapp.activeworkbook.saveas(?) ********************************************************* 利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel的控制作一下介绍: 1.创建Excel对象 eole=CREATEOBJECT(′Excel.application′) 2.添加新工作簿 eole.Workbooks.add 3.设置第3个工作表为激活工作表 eole.Worksheets(″sheet3″).Activate 4.打开指定工作簿 eole.Workbooks.Open(″c:\temp\ll.x ls″) 5.显示Excel窗口 eole.visible=.t. 6.更改Excel标题栏 eole.Caption=″VFP应用程序调用Microsoft Excel″ 7.给单元格赋值 eole.cells(1,4).value=XM(XM为数据库字段名) 8.设置指定列的宽度(单位:字符个数)

VFP全面控制EXCEL(完全版)

1.创建Excel对象 oExcel=Createobject("Excel.application") 2.添加新工作簿 oExcel.Workbooks.Add 3.设置第3个工作表为激活工作表 oExcel.Worksheets("sheet3").Activate 4.打开指定工作簿 oExcel.Workbooks.Open("c:\temp\ll.xls") 5.显示Excel窗口 oExcel.Visible=.T. 6.更改Excel标题栏 oExcel.Caption="VFP应用程序调用Microsoft Excel" 7.给单元格赋值 oExcel.cells(1,4).Value=XM(XM为数据库字段名) 8.设置指定列的宽度(单位:字符个数) oExcel.ActiveSheet.Columns(1).ColumnWidth=5 9.设置指定行的高度(单位:磅) oExcel.ActiveSheet.Rows(1).RowHeight=1&&(设定行高为1磅,1磅=0.035厘米) oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50行至100行的高度 10.在第18行之前插入分页符 oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 11.在第4列之前删除分页符 oExcel.ActiveSheet.Columns(4).PageBreak=0 12.指定边框线宽度(Borders参数如下) ole.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3 13.设置四个边框线条的类型 oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1 (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线) 14.设置页眉 oExcel.ActiveSheet.PageSetup.CenterHeader="报表1" 15.设置页眉(字体大小) oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后面的50可以自定义,表示字体的大小 16.设置页脚 oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页" 17.设置页脚(字体大小) oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后面的28可以自定义,表示字体的大小 18.设置页眉到顶端边距为2厘米 oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.035 19.设置页脚到底边距为3厘米 oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.035

在VFP中直接来控制Excel

在VFP中直接来控制Excel (转载) *!*VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel的控制作一下介绍: oExcel=Createobject("Excel.application") &&创建Excel对象 **对象属性 oExcel.Visible=.T. &&显示Excel窗口 oExcel.Caption="VFP应用程序调用Microsoft Excel" &&更改Excel标题栏 oExcel.DisplayAlerts = .F. &&关闭提示和警告消息,运行结束后,应将本属性设置回 True 值 oExcel.cells(1,4).Value=XM(XM为数据库字段名) &&给单元格赋值 **Workbooks属性 oExcel.Workbooks.Add &&添加新工作簿 oExcel.Workbooks.Open("c:\temp\ll.xls") &&打开指定工作簿 oExcel.Workbooks.Close &&关闭工作簿 oExcel.Quit &&退出Excel Release oExcel &&只有释放对象变量, EXCEL进程才会完全关闭 **Worksheets属性 oExcel.Worksheets("sheet3").Activate &&设置第3个工作表为激活工作表 oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 &&在第18行之前插入分页符 oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial &&粘贴 **ActiveWorkbook属性

VF中控制EXCEL的常用操作

VF中控制EXCEL的常用操作 myexcel=createobject('excel.application') &&创建一个对象 myexcel.visible=.t.&&可见 &&bookexcel=myexcel.workbooks.add bookexcel=myexcel.workbooks.open("C:\Documents and Settings\Administrator\桌面\学习\dd.xls") &&打开指定文件 nrows=bookexcel.worksheets('sheet1')&&打开工作表 UsedRange =https://www.sodocs.net/doc/118400312.html,edRange&&返回工作表中可使用的区域,UsedRange表的属性 usedrange.columns.count&&计算共几列 r=usedrange.rows.count&&汇总行 c=usedrange.columns.count&&汇总列 with myexcel.application .sheets('sheet3').select .sheets.add&&添加一个工作表 https://www.sodocs.net/doc/118400312.html, = 'ddddd'&&重命名表 endwith myexcel.Worksheets('sheet1').Activate&&选择表为当前工作表 myexcel.cells(1,1).value='sss'&&1,1处的值为 myexcel.activesheet.columns(2).columnwidth=15&&第2列的列宽设myexcel.activesheet.rows(2).rowheight=50&&设第2行的行高 myexcel.activesheet.rows(2).insert&&第2行前插入一行 myexcel.activesheet.columns(2).insert&&第2列前插入一列 myexcel.activesheet.Cells(1,1).Font.size=25&&设置1,1的字体大小myexcel.activesheet.Cells(1,1)https://www.sodocs.net/doc/118400312.html,='黑体'&&设置字体 myexcel.activesheet.Cells(1,1).clear&&清除内容 myexcel.activesheet.range('A1:C2').select&&选择区域 myexcel.selection.merge &&选择区域合并单元格 myexcel.Range('a1').Formula='=sum(b2,b3,b4,b5)'&&在A1中键入一个公式 myexcel.range('a1').ClearContents myexcel.activesheet.Columns('A:B').Select&&整列选中 myexcel.Selection.NumberFormatLocal="@" &&设置选中的区域为字符型数据 myexcel.activesheet.rows(1).select myexcel.Selection.EntireRow.Delete&&删除选中的行 myexcel.Selection.columns(1).Delete&&删除第几的列 myexcel.workbooks.close&&关闭工作区

VFP控制EXCEL的方法(终于找到了)

VFP控制EXCEL的常用方法 oExl=CREATEOBJECT('Excel.application') oExl.Visible=.T. oExl.DefaultSaveFormat=39 oExl.SheetsInNewWorkbook=1 oExl.Workbooks.Open(cXLS) oExl.WindowState=-4140 &&窗口最小化 oExl.WindowState=-4143 &&窗口正常化 oExl.WindowState=-4147 &&窗口最大化 *------------------------------------------------------* &&页面设置 oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&打印标题 oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向:1纵向/2横向 *oExl.ActiveSheet.PageSetup.PaperSize=11 &&纸张尺寸:9-A4/11-A5 oExl.ActiveSheet.PageSetup.TopMargin=0.8/0.035 &&顶边距 oExl.ActiveSheet.PageSetup.BottomMargin=0.8/0.035 &&底边距 oExl.ActiveSheet.PageSetup.LeftMargin=0 &&左边距 oExl.ActiveSheet.PageSetup.RightMargin=0 &&右边距 oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&页面居中 oExl.ActiveSheet.PageSetup.HeaderMargin=0.5/0.035 oExl.ActiveSheet.PageSetup.FooterMargin=0.5/0.035 oExl.ActiveSheet.PageSetup.LeftHeader="&9表格"”9是字号” oExl.ActiveSheet.PageSetup.CenterHeader="" oExl.ActiveSheet.PageSetup.RightHeader="&9" oExl.ActiveSheet.PageSetup.LeftFooter="" oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页" oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:'+代码+' 制表时间:"+TTOC(DATETIME()) *------------------------------------------------------* &&整体格式设置 oExl.ActiveSheet.Rows.Font.Size=9 https://www.sodocs.net/doc/118400312.html,='宋体' oExl.ActiveSheet.Rows.RowHeight=0.5/0.035 oExl.ActiveSheet.Rows.NumberFormatLocal="0.00_ ;[红色]-0.00" oExl.ActiveSheet.Rows.VerticalAlignment=2 &&单元格内容垂直居中 *------------------------------------------------------* &&获取最大行号和最大列号 Local nMaxRow,nMaxCol nMaxRow=https://www.sodocs.net/doc/118400312.html,edRange.Rows.Count nMaxCol=https://www.sodocs.net/doc/118400312.html,edRange.Columns.Count &&表头格式设置 oExl.ActiveSheet.Rows(1).Font.Size=16

VFP全面控制EXCEL

找出其存在的问题,并提出解决方案。针对要开发的系统进行人事系统调研,提出开发系统的可行性分析。在系统结构设计中先后用数据流图、数据字典、系统的功能结构图分析了系统所需的各种数据。在系统的设计中,详细的展现了系统的各个功能模块、所需的数据库表及表字段、系统菜单的设计等。 在系统的实现中,给出了系统的界 最近正好有空,看到不少人对VFP控制EXCEL有兴趣,现将上次的“精华贴”重新整理一下,供各位爱好者参考! oExcel.Selection.NumberFormatLocal = "@" &&把被选定的单元格设为文本格式 1、对象的创建与关闭 ******************************* eole=CREATEOBJECT('Excel.application') && 创建Excel对象 eole.Workbooks.add && 添加新工作簿 eole.Worksheets("sheet3").Activate && 设置第3个工作表为激活工作表 eole.Workbooks.Open("D:\ABC\11.xls") && 打开指定工作簿 eole.visible=.t. && 显示Excel窗口 eole.visible=.F. && 不显示Excel窗口 eole.Caption="VFP应用程序调用Microsoft Excel" && 更改Excel标题栏 eole.ActiveWorkbook.SaveAs("D:\ABC\22.xls") && 工作表另为 eole.ActiveWorkbook.saved=.t. && 放弃存盘 页脚内容1

VFP全面控制EXCEL(完全版)

VFP全面控制EXCEL VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel的控制作一下介绍: *!*1.创建Excel对象 oExcel=Createobject("Excel.application") *!*2.添加新工作簿 oExcel.Workbooks.Add *!*3.设置第3个工作表为激活工作表 oExcel.Worksheets("sheet3").Activate *!*4.打开指定工作簿 oExcel.Workbooks.Open("c:\temp\ll.xls") *!*5.显示Excel窗口 oExcel.Visible=.T. *!*6.更改Excel标题栏 oExcel.Caption="VFP应用程序调用Microsoft Excel" *!*7.给单元格赋值 oExcel.cells(1,4).Value=XM(XM为数据库字段名) *!*8.设置指定列的宽度(单位:字符个数) oExcel.ActiveSheet.Columns(1).ColumnWidth=5 *!*9.设置指定行的高度(单位:磅) oExcel.ActiveSheet.Rows(1).RowHeight=1 (设定行高为1磅,1磅=0.035厘米) oExcel.ActiveSheet.Rows("50:100").RowHeight=1&&设置第50行至100行的高度 *!*10.在第18行之前插入分页符 oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 *!*11.在第4列之前删除分页符 oExcel.ActiveSheet.Columns(4).PageBreak=0

巧将Excel建立的工作簿文件转成VFP成绩报表

巧将Excel建立的工作簿文件转成VFP成绩报表 图1找到需导入的电子工作簿 能否将Excel 2000建立的工作簿文件转化成Microsoft Excel 5.0和97(XLS)格式?启动Excel 2000,打开“另存为”对话框,发现保存类型可以保存为Microsoft Excel 5.0/95工作簿,于是将Excel 2000建立的工作簿文件保存为Microsoft Excel 5.0/95工作簿,再进行VFP中的“导入”操作,工作簿被成功导入了。 在“命令”窗口中,输入“list”,查看导入的结果,无误!用“list stru”,发现“字段名”、类型、字段“宽度”不合要求,在“命令”窗口使用“modi stru”命令分别按要求对“字段名”、类型、字段“宽度”进行修改,如图2所示。 图2对字段宽度进行修改 修改完毕,用VFP进行“导出”操作,如图3所示,至此符合要求的VFP成绩报表制作完成了。 图3用VFP进行导出 利用VFP制作财务报表——谈VFP与Excel的交互操作 在VFP中制作财务报表(或者是其他报表),通常的方法是利用VFP的报表生成器一步一步地生成,这种方法用起来很麻烦,

而且打印出来的报表格式也不能尽如人意。提到制作报表,你可能够马上想到大名鼎鼎的Excel,我们能不能将二者结合起来——利用VFP的数据处理的结果,再使用Excel排版并且打印输出,而且还要让二者结合得天衣无缝呢?答案是肯定的,利用OLE技术,你能够很容易地实现上述想法。 大家对VFP的CreateObject函数可能不会陌生,利用CreateObject函数,你能够在VFP中创建并使用任何在你计算机上注册了的类(通常在安装应用程序时,应用程序都会向注册表里添加类信息)。也就是说你能够在VFP中调用任何应用程序为你的数据处理服务。CreateObject的具体用法如下: CREATEOBJECT(ClassName[eParameter1,eParameter2,...]) 其中,ClassName指明欲建立对象的类名。eParameter1,eParameter2……是用来传递参数给OLE对象的(OLE对象进行初始化时要用要到的)。例如,在VFP中欲建立一Excel工作簿对象,只须在程序中加入下列语句:MySheet=CREATEOBJECT(′Excel.Sheet′)就行了。 要在VFP中灵活地调用Excel为你服务,首先你应该对Excel提供的各类对象进行深入了解。Excel为我们提供了一百多种对象,如应用程序对象、图表对象、工作簿对象等等。对于每种对象调用,你得遵循一定的规则(也就是说你必须熟悉VBA 编程)。接下来介绍Excel常见对象的调用方法。

VFP操作Excel命令大全

VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel的控制作一下介绍: *!* 1.创建Excel对象 oExcel=Createobject("Excel.application") *!* 2.添加新工作簿 oExcel.Workbooks.Add *!* 3.设置第3个工作表为激活工作表 oExcel.Worksheets("sheet3").Activate *!* 4.打开指定工作簿 oExcel.Workbooks.Open("c:\temp\ll.xls") *!* 5.显示Excel窗口 oExcel.Visible=.T. *!* 6.更改Excel标题栏 oExcel.Caption="VFP应用程序调用Microsoft Excel" *!* 7.给单元格赋值 oExcel.cells(1,4).Value=XM(XM为数据库字段名) *!* 8.设置指定列的宽度(单位:字符个数) oExcel.ActiveSheet.Columns(1).ColumnWidth=5 *!* 9.设置指定行的高度(单位:磅) oExcel.ActiveSheet.Rows(1).RowHeight=1 (设定行高为1磅,1磅=0.035厘米) oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50行至100行的高度 *!* 10.在第18行之前插入分页符 oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 *!* 11.在第4列之前删除分页符 oExcel.ActiveSheet.Columns(4).PageBreak=0 *!* 12.指定边框线宽度(Borders参数如下) ole.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3 *!* 13.设置四个边框线条的类型 oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1 (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线) *!* 14.设置页眉 oExcel.ActiveSheet.PageSetup.CenterHeader="报表1" *!* 15.设置页眉(字体大小) oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后面的50可以自定义,表示字体的大小 *!* 16.设置页脚 oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页" *!* 17.设置页脚(字体大小) oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后面的28可以自定义,表示字体的大小

VFP实现EXCEL数据转换

Visual FoxPro是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到DBF数据文件。然而随着办公自动化的普及,越来越多的时候需要将DBF文件转化为Excel 电子文档。常用转化方法是在FoxPro中用Copy命令进行格式转化或直接用Excel打开DBF 文件。这两种方式虽然都能达到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的Excel文件中,无法对数据类型进行有效转换,极易出现数据统计错误。有没有更好的方法呢?这里有一个更加通用的方法,在VFP中调用Excel,可以由DBF文件直接生成格式如下图所示一样复杂的Excel报表(如图1)。 具体过程如下: 假设我们要将表Agcallop.dbf文件输出为Excel格式文档,报表形如图1所示。为使通用性更强,页面采用A4纸横向输出,默认字体为宋体10号,页脚处添加页号。 部分程序代码如下: m.outfilename=putfile('输出结果','agcallop','xls') &&取导出文件名称 图1 Excel报表 ef=CREA TEOBJECT('Excel.application') &&调用Excel程序 ef.Workbooks.add &&添加工作簿 ef.Worksheets("sheet1").Activate &&激活第一个工作表 ef.visible=.t. &&显示Excel界面 ef.Cells.Select &&选择整张表 ef.Selection.Font.Size = 10

&&设置整表默认字体大小为10 select 0 use agcallop &&选择被导出的表 num=reccount() &&求导出总记录数 go top i=5 ef.range("F1:K1").Select &&选择标题栏所在单元格 ef.Selection.Merge &&合并单元格 with ef.range("F1 ") &&设置标题及字体属性 .value='客户服务部业务代表工作量情况统计表' https://www.sodocs.net/doc/118400312.html,="黑体" .Font.size=18 endwith ef.Rows(2).RowHeight=1/0.035 &&设置第二行高度为1cm ef.range("H2:O2").Select &&选定统计条件栏所在单元格

VFP与Excel交互编程

VFP与Excel交互编程 -------------------------------------------------------------------------------- - VFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员强有力的工具而广为使用; 而Excel则是一个优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势,成为广大办公应用人员必备的首选软件。上述两种软件在各自的应用领域均得到了广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。 本文将结合实例介绍VFP与Excel交互编程的方法,在VFP中除了使用OLE技术外,还可使用DDE技术与外部服务器进行数据交换,本文主要讲解VFP中使用OLE技术与Excel 交换数据,Excel中借助内置的VBA使用VFP提供的Application对象来调用VFP中的一些功能。其功能可简述如下:VFP数据表“学生成绩.DBF”中含“学号、姓名、语文、数学”等字段,示例程序将从Excel工作簿“VFP交互.XLS”的工作表“查询”中用“条件”区域(一般为一个矩形区中的数据,该区域名称指定为“条件”,数据形如“语文>60”、“数学<90”等)中的数据作为查询的条件,用“连接条件”区域(一般为一个单元格,其值为“or”或者“and”)来获取组合“条件”的逻辑连接,并将该连接信息的内容以工作表的形式显示出来,然后调用VFP中针对给定表的SQL查询来找出给定条件的记录并显示到Excel中。下列程序均在VFP 6.0与Excel 2000中调试通过。 Excel驱动VFP Excel内置的VBA语言(Visual Basic For Application)为Excel功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP搜索命令串,其搜索结果再借助于VFP的DataToClip 方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置,为了每次运行时能将结果插入到工作表中,依次对操作的工作表以“搜索结果”、“搜索结果1”等进行编号。 Sub exceluseFox () Dim oFox As Object ’声明oFox为一个对象 Dim SCommand As String ’SQL对应的命令串变量 Dim cell As Variant Dim choice As String Dim join As String

巧让VFP数据生成Excel报表示例

巧让VFP数据生成Excel报表示例 * 编号:A0027 * 功能:巧让VFP数据生成Excel报表示例 * 说明:不能打印备注型和通用型字段CLOSE DATABASES all SET DATE YMD SET CENTURY on SET PATH TO d:\vfp98 USE RKQK200802 ALIAS FoxTable IN 0 m.outfilename=putfile('输出结果','RKQK','xls') SELECT FoxTable &&取导出文件名称 ef=CREATEOBJECT('Excel.application') &&调用Excel程序 efapp=ef.application efapp.Workbooks.add efapp.activewindow.windowstate=2 &&添加工作簿 osheet=efapp.activesheet &&激活第一个工作表 ef.visible=.t.

&&显示Excel界面 ef.Cells.Select &&选择整张表 ef.Selection.Font.Size = 11 &&设置整表默认字体大小为11 num=reccount() &&求导出总记录数 go top i=5 ef.range("F1:K1").Select &&选择标题栏所在单元格 ef.Selection.Merge &&合并单元格 with ef.range("F1 ") &&设置标题及字体属性 .value='陈集小学各科任课情况一览表' https://www.sodocs.net/doc/118400312.html,="宋体" .Font.bold=.t. .Font.size=18 .Font.Color=RGB(255,0,0) endwith with ef.range("A3:P4 ")

vfp读取EXCEL文件数据

vfp直接读取EXCEL文件 vfp直接读取EXCEL文件的示例(转)。 M_File=GETFILE('xls','订单文件') IF M_File="" =MESSAGEBOX("请选择待导入的收订单文件!",0+48,"提示") RETURN ELSE IF JUSTEXT(M_FILE)#"XLS" &&获得文件扩展名 =MESSAGEBOX("您选择的不是EXCEL文档!",0+48,"提示") RETURN ENDIF ENDIF USE 图书订单表 ZAP myexcel=createobject('excel.application') &&创建一个对象 myexcel.visible=.f.&&不可见 bookexcel=myexcel.workbooks.open(M_File) &&打开指定文件 o_SheetName=https://www.sodocs.net/doc/118400312.html, &&获取当前激活工作表的名称UsedRange =bookexcel.worksheets(o_SheetName).UsedRange &&返回工作表中可使用的区域,UsedRange表的属性 o_rows=UsedRange.rows.count &&汇总行 o_cols=UsedRange.columns.count &&汇总列 IF o_rows<=1 =MESSAGEBOX("待导入数据行数太少,请检查!",0+16,"提示") ELSE FOR i=2 TO o_rows m1=myexcel.cells(i,1).value &&书号 m2=myexcel.cells(i,2).value &&书名 m3=myexcel.cells(i,3).value &&出版社

VFP完全控制EXCEL

VFP完全控制EXCEL 最近正好有空,看到不少人对VFP控制EXCEL有兴趣,现将上次的“精华贴”重新整理一下,供各位爱好者参考! 1、对象的创建与关闭 ******************************* eole=CREATEOBJECT('Excel.application') && 创建Excel对象 eole.Workbooks.add && 添加新工作簿 eole.Worksheets("sheet3").Activate && 设置第3个工作表为激活工作表 eole.Workbooks.Open("D:\ABC\11.xls") && 打开指定工作簿 eole.visible=.t. && 显示Excel窗口 eole.visible=.F. && 不显示Excel窗口 eole.Caption="VFP应用程序调用Microsoft Excel" && 更改Excel标题栏 eole.ActiveWorkbook.SaveAs("D:\ABC\22.xls") && 工作表另为 eole.ActiveWorkbook.saved=.t. && 放弃存盘 https://www.sodocs.net/doc/118400312.html,edRange.Copy && 拷贝整个工作表 eole.ActiveSheet.Range("A1:E2").Copy && 拷贝指定区域 eole.WorkSheet("Sheet2").Range("A1").PasteSpecial && 粘贴 eole.ActiveWorkbook.Save && 存盘(自动存盘不提问) eole.Workbooks.close && 关闭工作簿 eole.quit && 退出Excel 2、单元格的设置 *********************************** eole.ActiveSheet.Columns("D:D").Delete && 删除列 eole.ActiveSheet.Columns("A:B").Delete && 删除列 eole.ActiveSheet.Columns(1).ColumnWidth=20 && 列的宽度(单位:字符个数) eole.ActiveSheet.Columns(2).ColumnWidth=30 eole.ActiveSheet.Columns("C:BE").ColumnWidth=9.5 eole.Selection.Columns.AutoFit && 最适合的列宽 eole.ActiveSheet.Range("b3:d3").Borders(2).Weight=3 && 指定边框线宽度 (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/; LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线) eole.ActiveSheet.Range("A1:BE29").Borders(1).LineStyle=1 && 设置四个边框线条的类型 eole.ActiveSheet.Range("A1:BE29").Borders(2).LineStyle=1 && 设置四个边框线条的类型 eole.ActiveSheet.Range("A1:BE29").Borders(3).LineStyle=1 && 设置四个边框线条的类型 eole.ActiveSheet.Range("A1:BE29").Borders(4).LineStyle=1 && 设置四个边框线条的类型 eole.ActiveSheet.Rows(1).Insert && 在第1行之前插入一行 eole.ActiveSheet.Columns(2).Insert && 在第2列之前插入一列

VFP全面控制EXCEL

最近正好有空,看到不少人对VFP控制EXCEL有兴趣,现将上次的“精华贴”重新整理一下,供各位爱好者参考! oExcel.Selection.NumberFormatLocal = "@" &&把被选定的单元格设为文本格式 1、对象的创建与关闭 ******************************* eole=CREATEOBJECT('Excel.application') && 创建Excel对象 eole.Workbooks.add && 添加新工作簿 eole.Worksheets("sheet3").Activate && 设置第3个工作表为激活工作表 eole.Workbooks.Open("D:\ABC\11.xls") && 打开指定工作簿 eole.visible=.t. && 显示Excel窗口 eole.visible=.F. && 不显示Excel窗口 eole.Caption="VFP应用程序调用Microsoft Excel" && 更改Excel标题栏 eole.ActiveWorkbook.SaveAs("D:\ABC\22.xls") && 工作表另为 eole.ActiveWorkbook.saved=.t. && 放弃存盘 https://www.sodocs.net/doc/118400312.html,edRange.Copy && 拷贝整个工作表 eole.ActiveSheet.Range("A1:E2").Copy && 拷贝指定区域 eole.WorkSheet("Sheet2").Range("A1").PasteSpecial && 粘贴 eole.ActiveWorkbook.Save && 存盘(自动存盘不提问) eole.Workbooks.close && 关闭工作簿 eole.quit && 退出Excel 2、单元格的设置 *********************************** eole.ActiveSheet.Columns("D:D").Delete && 删除列 eole.ActiveSheet.Columns("A:B").Delete && 删除列 eole.ActiveSheet.Columns(1).ColumnWidth=20 && 列的宽度(单位:字符个数) eole.ActiveSheet.Columns(2).ColumnWidth=30 eole.ActiveSheet.Columns("C:BE").ColumnWidth=9.5 eole.Selection.Columns.AutoFit && 最适合的列宽

VFP控制EXCEL的方法

VFP控制EXCEL的方法 常用语句: *------------------------------------------------------* oExl=CREATEOBJECT('Excel.application') oExl.Visible=.T. oExl.DefaultSaveFormat=39 oExl.SheetsInNewWorkbook=1 oExl.Workbooks.Open(cXLS) oExl.WindowState=-4140 &&窗口最小化 oExl.WindowState=-4143 &&窗口正常化 oExl.WindowState=-4147 &&窗口最大化 *------------------------------------------------------* &&页面设置 oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&打印标题 oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向:1纵向/2横向 *oExl.ActiveSheet.PageSetup.PaperSize=11 &&纸张尺寸:9-A4/11-A5 oExl.ActiveSheet.PageSetup.TopMargin=0.8/0.035 &&顶边距 oExl.ActiveSheet.PageSetup.BottomMargin=0.8/0.035 &&底边距 oExl.ActiveSheet.PageSetup.LeftMargin=0 &&左边距 oExl.ActiveSheet.PageSetup.RightMargin=0 &&右边距 oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&页面居中 oExl.ActiveSheet.PageSetup.HeaderMargin=0.5/0.035 oExl.ActiveSheet.PageSetup.FooterMargin=0.5/0.035 oExl.ActiveSheet.PageSetup.LeftHeader="&9东莞市广众商贸有限公司表格" oExl.ActiveSheet.PageSetup.CenterHeader="" oExl.ActiveSheet.PageSetup.RightHeader="&9" oExl.ActiveSheet.PageSetup.LeftFooter="" oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页" oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:'+cUser+' 制表时间:"+TTOC(DATETIME()) *------------------------------------------------------* &&整体格式设置 oExl.ActiveSheet.Rows.Font.Size=9 https://www.sodocs.net/doc/118400312.html,='宋体' oExl.ActiveSheet.Rows.RowHeight=0.5/0.035 oExl.ActiveSheet.Rows.NumberFormatLocal="0.00_ ;[红色]-0.00" oExl.ActiveSheet.Rows.VerticalAlignment=2 &&单元格内容垂直居中

相关主题