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 = "右页眉"


发布评论