VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel的控制作一下介绍:
*!* 1.创建Excel对象
oExcel=Createobject(\*!* 2.添加新工作簿 oExcel.Workbooks.Add
*!* 3.设置第3个工作表为激活工作表 oExcel.Worksheets(\*!* 4.打开指定工作簿
oExcel.Workbooks.Open(\*!* 5.显示Excel窗口 oExcel.Visible=.T.
*!* 6.更改Excel标题栏
oExcel.Caption=\应用程序调用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行的高度 *!* 10.在第18行之前插入分页符
oExcel.Worksheets(\*!* 11.在第4列之前删除分页符
oExcel.ActiveSheet.Columns(4).PageBreak=0 *!* 12.指定边框线宽度(Borders参数如下)
ole.ActiveSheet.Range(\*!* 13.设置四个边框线条的类型
oExcel.ActiveSheet.Range(\
(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)
*!* 14.设置页眉
oExcel.ActiveSheet.PageSetup.CenterHeader=\报表1\*!* 15.设置页眉(字体大小)
oExcel.ActiveSheet.PageSetup.CenterHeader=\报表1\后面的50可以自定义,表示字体的大小
*!* 16.设置页脚
oExcel.ActiveSheet.PageSetup.CenterFooter=\第&P页\*!* 17.设置页脚(字体大小)
oExcel.ActiveSheet.PageSetup.CenterFooter=\第&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-宽行14oExcel.ActiveSheet.PageSetup.Papersize=1 *!* 27.打印单元格网线
oExcel.ActiveSheet.PageSetup.PrintGridlines=.T. *!* 28.拷贝整个工作表
oExcel.ActiveSheet.UsedRange.Copy *!* 29.拷贝指定区域
oExcel.ActiveSheet.Range(\*!* 30.粘贴
oExcel.WorkSheet(\*!* 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
11 9:A4)
*!* 40. oExcel.CommandBars(1).Controls(1).accChild(18).Execute &&打印(菜单序号18为Excel2003的‘打印’项)
&&不同版本Excel的菜单序号可以通过以下程序取得 *(需要在VFP7.0以上运行) oXls=Getobject(\XlApp=oXLS.Application XlSheet=XlApp.ActiveSheet bars=xlapp.CommandBars.Count Str1=''
For i=1 To bars
Str1=Str1+Chr(13)+Alltrim(Str(i))+'、'+xlapp.CommandBars(i).accName+'(NAME:'+xlapp.CommandBars(i).Name+' INDEX:'+Alltrim(Str(xlapp.CommandBars(i).Index))+')'
bars2=xlapp.commandbars(i).accChildCount For j=1 To bars2 Try
obj=xlapp.commandbars(i).Controls(j) Str1=Str1+Chr(13)+' '+Alltrim(Str(j))+'、'+xlapp.commandbars(i).Controls(j).accname+'(ID:'+Alltrim(Str(xlapp.CommandBars(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(\
*检测当前目录是否有同名的EXCEL表,如果有先删除,再另存 If !File(Sys(5) + Curdir() + \
oExcel.ActiveWorkbook.SaveAs(Sys(5) + Curdir() + \Else
lcFileName = loExcel.GetSaveAsFilename(\ 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(\*!* 47.下列设置大家自己理解 With crfole.ActiveSheet.PageSetup .LeftHeader = Chr(13)+\左页眉\ .CenterHeader = \中页眉\ .RightHeader = \右页眉\ .LeftFooter = \左页脚\ .CenterFooter = \中页脚\ .RightFooter = \右页脚\
.Orientation=1 &&1竖排,2横排 Endwith
With crfole.Range(\ .MergeCells = .T. .WrapText =.F. .Orientation = 0 .AddIndent =.F. .ShrinkToFit = .F. Endwith
*!* 48.文本对齐
oExcel.Range(\=1 &&水平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐)
oExcel.Range(\垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)