2024年5月1日发(作者:)

Visual Foxpro中如何实现对EXCEL表格的操作

VFP和Excel都可以用来进行处理数据库表格,如果

巧妙地将二者的优点结合起来,将会大大方便我们

的工作。比如我们可以利用VFP进行处理数据,而

利用Excel的预览打印功能进行报表打印。这就需要

我们在VFP中直接来控制Excel。下面就在开发VFP

应用项目时对Excel的控制作一下介绍:

1.创建Excel对象

oExcel=CREATEOBJECT("ation")

2.添加新工作簿

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

eets("sheet3").Activate

4.打开指定工作簿

("c:")

5.显示Excel窗口

e=.t.

6.更改Excel标题栏

n="VFP应用程序调用Microsoft Excel"

7.给单元格赋值

(1,4).value=XM(XM为数据库字段名)

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

s(1).ColumnWidth=5

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

(1).RowHeight=1

(设定行高为1磅,1磅=0.035厘米)

("50:100").RowHeight=1 &&

设置第50行至100行的高度

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

eets("Sheet1").Rows(18).PageBreak=1

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

s(4).PageBreak=0

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

("b3:d3").Borders(2).Weight=3

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

("b3:d3").Borders(2).LineSty

le=1

(其中Borders参数:1-左、2-右、3-顶、4-底、

5-斜、6-斜/;LineStyle值:1与7-细实、2-细

虚、4-点虚、9-双细实线)

14.设置页眉

Header="报表1"

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

Header="&50报

表1" &&'&'后面的50可以自定义,表示字体的大小

15.设置页脚

Footer="第&P页

"

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

Footer="&28第

&P页" &&'&'后面的28可以自定义,表示字体的大

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

Margin=2/0.035

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

Margin=3/0.035

18.设置顶边距为2厘米

gin=2/0.035

19.设置底边距为4厘米

Margin=4/0.035

20.设置左边距为2厘米

rgin=2/0.035

21.设置右边距为2厘米

argin=2/0.035

22.设置页面水平居中

Horizontally=.t.

23.设置页面垂直居中

Vertically=.t.

24.设置页面纸张大小(1-窄行8 5 11 39-宽

行14 11 9:A4)

ize=1

25.打印单元格网线

ridlines=.t.

26.拷贝整个工作表

27.拷贝指定区域

("A1:E2").Copy

28.粘贴

eet("Sheet2").Range("A1").PasteSpecial

29.在第2行之前插入一行

(2).Insert

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

s(2).Insert

31.设置字体

(2,1).="黑体"

32.设置字体大小

(1,1).=25

33.设置字体为斜体

(1,1).=.t.

34.设置整列字体为粗体

s(1).=.t.

35.清除单元格公式

(1,4).ClearContents

36.打印预览工作表

review

37.打印输出工作表

ut

38.

dBars(1).Controls(1).accChild(18).Exe

cute &&打印(菜单序号18为Excel2003的‘打印’

项)

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

取得

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

oXls=GETOBJECT("","")

XlApp=ATION

XlSheet=Sheet

bars=

STR=''

FOR i=1 TO bars

STR=STR+CHR(13)+ALLTRIM(STR(i))+'、

'+dBars(i).accName+'(NAME:'+xlapp.C

ommandBars(i).NAME+'

INDEX:'+ALLTRIM(STR(dBars(i).IND

EX))+')'

bars2=dbars(i).accChildCount

FOR j=1 TO bars2

TRY

obj=dbars(i).CONTROLS(j)

STR=STR+CHR(13)+'

'+ALLTRIM(STR(j))+'、

'+dbars(i).CONTROLS(j).accname+'(ID:

'+ALLTRIM(STR(dBars(i).CONTROL

S(j).ID))+')'

FOR k=1 TO ldCount

TRY

IF NOT

EMPTY(LS(k).accname )

STR=STR+CHR(13)+'

'+ALLTRIM(STR(k))+'、

'+LS(k).accName+' (ID:'+

ALLTRIM(STR(LS(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 ALL LIKE STR

MODIFY COMMAND

RETURN

39.工作表另存为

("c:")

检测当前目录是否有同名的EXCEL表,如果有先删

除,再另存

IF !FILE(SYS(5) + CURDIR() + "")

(SYS(5) +

CURDIR() + "")

ELSE

lcFileName =

eAsFilename("result", "Excel (*.xls),

*.xls")

IF !EMPTY(lcFileName)

IF FILE(lcFileName)

DELETE FILE (lcFileName)

ENDIF

(lcFileName)

ENDIF

ENDIF

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

=.t.

41.存盘

42.关闭工作簿

43.退出Excel

RELEASE oExcel &&只有释放对象变量, EXCEL进

程才会完全关闭

44.合并单元格

("A4:B5").MergeCells=.t.

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

With tup

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

.CenterHeader = "中页眉"

.RightHeader = "右页眉"