VFP全面控制EXCEL.docx

上传人:b****6 文档编号:7953578 上传时间:2023-01-27 格式:DOCX 页数:20 大小:22.69KB
下载 相关 举报
VFP全面控制EXCEL.docx_第1页
第1页 / 共20页
VFP全面控制EXCEL.docx_第2页
第2页 / 共20页
VFP全面控制EXCEL.docx_第3页
第3页 / 共20页
VFP全面控制EXCEL.docx_第4页
第4页 / 共20页
VFP全面控制EXCEL.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

VFP全面控制EXCEL.docx

《VFP全面控制EXCEL.docx》由会员分享,可在线阅读,更多相关《VFP全面控制EXCEL.docx(20页珍藏版)》请在冰豆网上搜索。

VFP全面控制EXCEL.docx

VFP全面控制EXCEL

VFP全面控制EXCEL

VFP全面控制EXCEL

分类:

VFP-OFFICE2006-04-2212:

3632139人阅读评论(39)收藏举报

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应用程序调用MicrosoftExcel"

*!

*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-窄行851139-宽行14119:

A4)

oExcel.ActiveSheet.PageSetup.Papersize=1

*!

*27.打印单元格网线

oExcel.ActiveSheet.PageSetup.PrintGridlines=.T.

*!

*28.拷贝整个工作表

oExcel.ActiveSheet.UsedRange.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).Font.Name="黑体"

*!

*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.oExcel.CommandBars

(1).Controls

(1).accChild(18).Execute&&打印(菜单序号18为Excel2003的‘打印’项)

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

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

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

XlApp=oXLS.Application

XlSheet=XlApp.ActiveSheet

bars=xlapp.CommandBars.Count

Str1=''

Fori=1Tobars

Str1=Str1+Chr(13)+Alltrim(Str(i))+'、'+xlapp.CommandBars(i).accName+'(NAME:

'+xlapp.CommandBars(i).Name+'INDEX:

'+Alltrim(Str(xlapp.CommandBars(i).Index))+')'

bars2=mandbars(i).accChildCount

Forj=1Tobars2

Try

obj=mandbars(i).Controls(j)

Str1=Str1+Chr(13)+''+Alltrim(Str(j))+'、'+mandbars(i).Controls(j).accname+'(ID:

'+Alltrim(Str(xlapp.CommandBars(i).Controls(j).Id))+')'

Fork=1Toobj.accChildCount

Try

IfNotEmpty(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

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

Endfor

SaveToXls.txtAllLikeStr1

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

IfFile(lcFileName)

DeleteFile(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

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

*!

*46.合并单元格

oExcel.ActiveSheet.Range("A4:

B5").MergeCells=.T.

*!

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

Withcrfole.ActiveSheet.PageSetup

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

.CenterHeader="中页眉"

.RightHeader="右页眉"

.LeftFooter="左页脚"

.CenterFooter="中页脚"

.RightFooter="右页脚"

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

Endwith

Withcrfole.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企业版下运行通过,运行环境为Excel97及中文Windows98

*!

*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

ReleaseoExcel

*!

*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;这样每次出现需用户应答的消息时,MicrosoftExcel将选择默认应答。

如果将本属性设置为False,那么宏运行结束后,MicrosoftExcel并不自动将其设置回True。

故当宏运行结束后,都应将本属性设置回True值。

*!

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

strPath='D:

/TEST/123.xls'

LocaloExcel

oExcel=Createobject("Excel.Application")

oExcel.WorkBooks.Open(strPath)

arrTableInfo=oExcel.ActiveSheet.UsedRange.Value&&将当前工作表中的已用区域(只读)存入数组。

oExcel.Quit

ReleaseoExcel

InsertInto表名FromarrTableInfo

*!

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

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则出错,不知为何!

*!

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

Clear

LocallnSheetCount

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

oExcel.WORKBOOKS.Open("c:

/111/321.xls")&&打开指定工作簿

WithoExcel

lnSheetCount=.WorkBooks

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

Endwith

'当前EXCEL表中工作表的数目为:

'+Alltrim(Str(lnSheetCount))

ForEachoMyVarInoExcel.sheets

'当前EXCEL表中工作表的名称分别为'+oMyVar.Name&&显示Excel表中所有工作表

NextoMyVar

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

oExcel.Quit&&退出Excel

*!

*59.获取工作表名称

在以下示例中,创建了一个microsoftexcel实例,添加了一个新的工作簿。

使用foreach语句显示工作簿中每个工作表的名称。

此示例要求在运行示例的机器上正确安装microsoftexcel。

oExcel=Create("Excel.Application")

oExcel.Workbooks.Add

ForEachoMyVarInoExcel.sheets

oMyVar.Name

NextoMyVar

*!

*60.虽然用APPENDFromtx.XlsTypeXL8可以更简单的追加数据,但有时会导致程序非法错误退出(除非先另存为Excel5.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')&&要保存的文件名

IfFile(asfil)

DeleteFile&asfil

Endif

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

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

oExcel.Workbooks.Close&&关闭表

oExcel.Quit&&退出EXCEL

ReleaseoExcel&&释放变量

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

ReleaseoExcel&&释放变量

Messagebox('Excel文件:

D:

/TEST.XLS另存为D:

/TEST.DBF完成!

',64,'信息提示')

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

'功能:

VB调用Excel,将一个Excel文件另存为Dbf。

'

'前提:

要安装Excel'

DimoExcelAsObject

lcSFileName="D:

/test.xls"'源Excel文件名

lcDFileName="D:

/test1.dbf"'目标Dbf文件名

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

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

*R=oExcel.SHEETS

(1).UsedRange.ROWS.Count'有数据的总行数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1