标题:VFP全面控制EXCEL
只看楼主
tzhtang
Rank: 1
等 级:新手上路
帖 子:888
专家分:0
注 册:2004-8-30
 问题点数:0 回复次数:8 
VFP全面控制EXCEL

  VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进 行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对Excel 的控制作一下介绍:

  1.创建Excel对象

  eole=CREATEOBJECT(′Excel.application′)

  2.添加新工作簿

  eole.Workbooks.add

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

  eole.Worksheets(″sheet3″).Activate

  4.打开指定工作簿

  eole.Workbooks.Open(″c:\temp\ll.xls″)

  5.显示Excel窗口

  eole.visible=.t.

  6.更改Excel标题栏

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

  7.给单元格赋值

  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参数如下)

  ole.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厘米

  veole.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(″c:\temp\22.xls″)

  39.放弃存盘

  eole.ActiveWorkbook.saved=.t.

  40.关闭工作簿

  eole.Workbooks.close

  41.退出Excel

  eole.quit

搜索更多相关主题的帖子: VFP EXCEL 
2005-04-13 16:28
淡雪薇香
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-4-11
得分:0 
谢谢,支持楼主!!
2005-04-14 18:55
小星
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2005-4-14
得分:0 
命令敲下去一点反映都没有,看来我装的vfp版本不仅是向导存在问题

2005-04-14 21:36
HPQZXYQ
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2006-5-14
得分:0 
请问楼主:
假定Excel工作表B2单元格的数据为“请求赐教”,现在我希望在VFP下将工作表的B2:B5区域合并成一个单元格,然后将“请求赐教”四个汉字纵向显示,该如何处理,用什么命令??
2006-05-14 21:29
blueblood
Rank: 2
等 级:新手上路
威 望:4
帖 子:135
专家分:0
注 册:2006-4-2
得分:0 

这样一模一样的怎么总重复发呀?拜托大家来点新的吧!

2006-05-15 08:12
ytwj
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-5-15
得分:0 

VFP调用Word一法

  在VFP中通过OLE可以实现某一字段的超级链接和对象的嵌入,但在编程应用中,尤其是编制文件管理程序时很不方便。如某一字段为GEN型字段,链接到一个Word文档,通过VFP提供的Form可以实现该文档的显示和修改,但必须在编辑状态下,而且显示的格式以及对Word文档的一些操作都无法实现,最为烦琐的是该数据字段的录入。

  笔者通过VFP中提供的建立和取得对象的函数,实现了Word文档的正常调用,而且又省去了建立VFP数据记录时对GEN字段逐条录入的工作。通过该方法,扩展开发数据库与Word应用相结合的某些功能。

  该程序的目的是通过VFP的数据库实现文件目录的检索,然后通过检索到的文件标题,实现Word文档的正常调用。

  1.首先建立文档检索目录数据表,表中的字段可根据具体应用加以扩充,在此仅列出几个字段:

  文号,C,30

  标题,C,50

  2. 建立表单,实现数据表的录入、修改、删除、查询和显示。

  3.在以往的工作中,为了实现Word文档的显示,必须建立一个GEN字段,笔者没有建立,而是通过命令按钮实现,该按钮的单击事件如下:

  str1=′d:\文件汇编\′

  &&word文档所在目录

  str2=allt(thisform.标题1.value)

   &&当前表单显示的标题

  str3=′.doc′

   &&当前表单标题文件所对应的WORD文档的文件类型

  str=′ ″ ′+str1+str2+str3+′ ″ ′

   &&STR变量的值

  if file(&str)

  &&确定文件是否存在

  oleapp=createobject(″word.basic″)

   &&建立一个WORD文档对象

   oleApp.appshow

   &&实现该对象的前端显示

   oleApp.fileopen(str)

  &&打开str文件,str为一字符串变量,其值为当前表单显示的标题内容

   else

   =messagebox(′没有查到该文件′)

  endif

2006-05-15 10:47
rices
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-28
得分:0 
eole=CREATEOBJECT('Excel.application')
eole.visible=.t.
eole.Workbooks.add
eole.cells(2,2).value="请求赐教"
eole.Range("B2:B5").Select
eole.Selection.Merge

用EXCEL的"录制宏"录一下相关操作,就知道怎么用程序来操作了.
2006-05-15 19:08
blueblood
Rank: 2
等 级:新手上路
威 望:4
帖 子:135
专家分:0
注 册:2006-4-2
得分:0 

楼主:四楼的还问了“怎么纵排?”
虽说可以用"录制宏",但我还是有几个问题解决不了,望各位大虾指点!
一个是四楼问的;一个是在工作溥内移动工作表,一定在同一个工作簿哦!

2006-05-15 21:11
dingyadang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-7-2
得分:0 

小弟有一难事,最近在编一vfp程序时,要打印一个excel表,需要选择打印机,但打印机后面的端口不知怎么获得?
本人用EXCEL录制的宏拷贝的代码如下:

oexl=createobject("excel.application")
oexl.workbooks.open ("D:\监管仓库\作业单.xls")
oexl. Application.ActivePrinter = "在 EXPORT2 上自动 EPSON LQ-1600K4 在 Ne01:"
或oexl. Application.ActivePrinter = "在 KF22 上自动 EPSON LQ-1600K4 在 Ne00:"
或oexl. Application.ActivePrinter = "EPSON Stylus C41 Series 在 LPT3:"
或oexl. Application.ActivePrinter = "EPSON LQ-1600K4 在 LPT1:"
oexl. ActiveSheet.PrintOut
请各位高手指教!

2006-07-02 10:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-15545-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018543 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved