回 帖 发 新 帖 刷新版面

主题:王工:请查收VFP--EXCEL控制方法!

前面一段为原网上提供的控制命令,  后面是我最近编程运用其命令, 以及有新增的内容,
现提供参考。

*1.创建Excel对象

eole=CREATEOBJECT('Excel.application')

*  *2.添加新工作簿

eole.Workbooks.add

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

eole.Worksheets("sheet3").Activate

* * 4.打开指定工作簿

eole.Workbooks.Open("D:\资源调查系统\11.xls")

* * 5.显示Excel窗口

eole.visible=.t.

*  6.更改Excel标题栏

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

*  7.给单元格赋值

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


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

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

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

eole.ActiveSheet.Rows(1).RowHeight=1/0.035

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

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

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

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

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

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

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

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

eole.ActiveSheet.Range("b3:d3").Borders(2).LineStyle=1

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

*  14.设置页眉

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

* * 15.设置页脚

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

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

eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035

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

eole.ActiveSheet.PageSetup.FooterMargin=3/0.035

* * 18.设置顶边距为2厘米

eole.ActiveSheet.PageSetup.TopMargin=2/0.035

*  19.设置底边距为4厘米

eole.ActiveSheet.PageSetup.BottomMargin=4/0.035

*  20.设置左边距为2厘米

eole.ActiveSheet.PageSetup.LeftMargin=2/0.035

*  21.设置右边距为2厘米

eole.ActiveSheet.PageSetup.RightMargin=2/0.035

*  22.设置页面水平居中

eole.ActiveSheet.PageSetup.CenterHorizontally=.t.

*  23.设置页面垂直居中

eole.ActiveSheet.PageSetup.CenterVertically=.t.

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

eole.ActiveSheet.PageSetup.PaperSize=1

*  25.打印单元格网线

eole.ActiveSheet.PageSetup.PrintGridlines=.t.

*  26.拷贝整个工作表

*eole.ActiveSheet.UsedRange.Copy

*  27.拷贝指定区域

*eole.ActiveSheet.Range("A1:E2").Copy

*  28.粘贴

*eole.WorkSheet("Sheet2").Range("A1").PasteSpecial

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

eole.ActiveSheet.Rows(2).Insert

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

eole.ActiveSheet.Columns(2).Insert

*  31.设置字体

eole.ActiveSheet.Cells(2,1).Font.Name="黑体"

* * 32.设置字体大小

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

*  33.设置字体为斜体

eole.ActiveSheet.Cells(1,1).Font.Italic=.t.

*  34.设置整列字体为粗体

eole.ActiveSheet.Columns(1).Font.Bold=.t.

*  35.清除单元格公式

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

*  36.打印预览工作表

eole.ActiveSheet.PrintPreview

*  37.打印输出工作表

*eole.ActiveSheet.PrintOut

*  38.工作表另为

eole.ActiveWorkbook.SaveAs("D:\资源调查系统\22.xls")

*  39.放弃存盘

*  eole.ActiveWorkbook.saved=.t.

*  40.关闭工作簿

eole.Workbooks.close

*  41.退出Excel

eole.quit

************************
USE &PPPP\data\编辑表1
COPY FIELDS 人员结构  TO ARRAY PP    && 01表竖向取数
USE
BTMC='苏州市预算单位资源调查--单 位 概 况 表'
BBBB='编报单位:'+GKCS
         
eole=CREATEOBJECT('Excel.application')                 && 创建Excel对象  【】
eole.Workbooks.Open("&PPPP\汇总上报1_1.xls") && 打开指定工作簿
*eole.visible=.T.                                       && 显示Excel窗口

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(3).ColumnWidth=10
eole.ActiveSheet.Columns("D:BE").ColumnWidth=9.5

*eole.ActiveSheet.Range("b3:d3").Borders(2).Weight=3 && 指定边框线宽度(Borders参数如下)
                      *  (其中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.PageSetup.HeaderMargin=2/0.035       && 设置页眉到顶端边距为2厘米  
eole.ActiveSheet.PageSetup.FooterMargin=3/0.035       && 设置页脚到底边距为3厘米
eole.ActiveSheet.PageSetup.TopMargin=4/0.035          && 设置顶边距为4厘米
eole.ActiveSheet.PageSetup.BottomMargin=4/0.035       && 设置底边距为4厘米
eole.ActiveSheet.PageSetup.LeftMargin=2/0.035         && 设置左边距为2厘米
eole.ActiveSheet.PageSetup.RightMargin=2/0.035        && 设置右边距为2厘米
eole.ActiveSheet.PageSetup.CenterHorizontally=.t.     && 设置页面水平居中
*eole.ActiveSheet.PageSetup.CenterVertically=.t.      && 设置页面垂直居中
eole.ActiveSheet.PageSetup.PaperSize=8                && 设置页面纸张大小(1-窄行8511 39-宽行1411)
eole.ActiveSheet.PageSetup.Orientation=2              && 横向

eole.ActiveSheet.Rows(1).Insert                       && 在第1行之前插入一行
eole.ActiveSheet.Rows(1).Insert
*eole.cells(1,2).value="&BTMC"                         && 给单元格赋值
eole.cells(2,2).value="&BBBB"                         && 给单元格赋值

eole.ActiveSheet.Rows(1).RowHeight=1/0.035            && 设置指定行的高度(单位:磅)(设定行高为1厘米,1磅=0.035厘米)
eole.ActiveSheet.ROWS(1).Font.Name="黑体"             && 设置字体
eole.ActiveSheet.ROWS(1).Font.Size=14                 && 设置字体大小
eole.ActiveSheet.ROWS(1).Font.Bold=.t.                && 设置整行字体为粗体

eole.ActiveSheet.ROWS(2).Font.Name="宋体"             && 设置字体
eole.ActiveSheet.ROWS(2).Font.Size=11                 && 设置字体大小

eole.ActiveSheet.Rows(3).RowHeight=2/0.035            && 设置指定行的高度(单位:磅)(设定行高为1厘米,1磅=0.035厘米)
eole.ActiveSheet.ROWS(3).Font.Name="宋体"             && 设置字体
eole.ActiveSheet.ROWS(3).Font.Size=10                 && 设置字体大小
eole.ActiveSheet.ROWS(3).Font.Bold=.t.                && 设置整行字体为粗体

****下有 部份新增内容

eole.Range("A3:BE3").select
eole.selection.WrapText = .T.                         && 自动换行
eole.selection.HorizontalAlignment=3                  && 水平方向 2左对齐,3居中,4右对齐
eole.selection.VerticalAlignment = 2                  && 垂直方向 1靠上 ,2居中,3靠下

eole.Range("A2:B2").select
eole.selection.MergeCells = .T.                       && 合并单元
eole.selection.HorizontalAlignment=2                  && 水平方向 2左对齐,3居中,4右对齐
eole.selection.VerticalAlignment = 2                  && 垂直方向 1靠上 ,2居中,3靠下

eole.ActiveSheet.PageSetup.PrintTitleRows="$1:$3"     && 定义固定行
eole.ActiveSheet.PageSetup.PrintTitleColumns="$A:$C"  && 定义固定列

eole.ActiveSheet.PageSetup.CenterFooter="01表上年数__第&P页"  && 设置页脚
eole.ActiveSheet.PageSetup.CenterHeader= "&14&BTMC"   && 设置页眉

SSS=1
DO WHILE SSS<=54
eole.cells(3,SSS+3).value=ALLTRIM(PP(SSS))            && 给单元格赋值
SSS=SSS+1
ENDDO

*eole.ActiveSheet.PrintPreview                        && 打印预览工作表
eole.ActiveWorkbook.Save                              &&  存盘(自动存盘)
eole.Workbooks.close                                  && 关闭工作簿
eole.quit                                             && 退出Excel

**************************************************************

回复列表 (共8个回复)

沙发

你是VFP大师

板凳

請問如果要列印的報表不止一頁怎麽辦?

3 楼

eole.ActiveSheet.PageSetup.PrintTitleRows="$1:$3"     && 定义固定行
eole.ActiveSheet.PageSetup.PrintTitleColumns="$A:$C"  && 定义固定列
就是解决自动分页与分列的问题!

4 楼

请问我用如下命令保护EXCEL内容不被修改,但命令执行成功后,UnProtect操作却不用输入Password,请问应如何编写这条命令?谢谢!
eole.ActiveSheet.Protect 'DrawingObjects:=True, Contents:=True, Scenarios:=True, Password :="2004PT" '

5 楼

如果要打印GRID中选定的记录数据,如何操作?
GIRD 的数据源为用 (select * from 表 where 条件 into cursor aaa)形成的临时表"aaa"

6 楼

将临时表"aaa"转为DBF文件,不就可以参考上述方法了吗!

7 楼

我正需要,谢谢!!!

8 楼

增加一个“最适合的列宽”
oExl.Selection.Columns.AutoFit

我来回复

您尚未登录,请登录后再回复。点此登录或注册