VFP与EXCEL的几种交互编程方法_第1页
VFP与EXCEL的几种交互编程方法_第2页
VFP与EXCEL的几种交互编程方法_第3页
VFP与EXCEL的几种交互编程方法_第4页
VFP与EXCEL的几种交互编程方法_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VFP与EXCEL的几种交互编程方法一、EXECL驱动VFP EXECL内置的VBA语言(Visual Basic For Application)为EXECL功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。 程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP摸索命令串,其摸索结果再借助于VFP的DateToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置。 Sub FoxTest() Dim oFox As Object Dim SLesson As String Dim SCommand As String Set oFox = CreateObject(VisualFoxPro.Application) 启动VFP,生成VFP对象 Sheets(查询).Select SLesson = Range(课程名) 在名为“课程名”的单元格中得到欲查询的课程名称 Sheets.Add 产生新的工作表单 ActiveSheet.Name = Slesson 指定工作表单的名称与课程名称相同 SCommand = SELECT 学号,语文,数学 FROM d:vfp学生成绩表 WHERE + SLesson + 60 INTO CURSOR TEMP 形成VFP查询命令串 oFox.DoCmd Scommand 执行VFP命令串 oFox.DataToClip temp, , 3 将搜索结果以文本方式拷贝至剪切板 Range(a1:a1).Select 指向拷贝目标区域左上角单元 ActiveSheet.Paste 粘贴搜索结果 End Sub 为便于使用,作者在EXECL中自制了一名为“搜索”的工具栏及一名为“开始搜索”的按钮,并将上述宏程序段与自制按钮相关联,按下此按钮即可运行程序并在EXCEL中得到要求的数据。 制作工具栏及按钮的方法如下: 1. 选“工具”/“自定义”菜单,出现自定义对话框; 2. 选择“工具栏”页框,然后按下“新建”按钮; 3. 在工具栏对话框中输入“搜索”作为新建工具栏的名称; 4. 选择“命令”页框,在“类别”列表中选“宏”,在“命令”列表中选“自定义按钮”并将其拖放至新建的“搜索”工具栏; 5. 按下“更新所选内容”按钮,首先在“命名”栏中填入按钮名称“开始搜索”,然后选择“指定宏”,在随后出现的“指定宏”列表中选择上述宏程序FoxTest()即可实现为该宏指定一个工具栏按钮。 VFP与EXCEL的几种交互编程方法 时间 : 2007-09-25 作者:佚名 编辑:本站 点击: 1605 评论 二、VFP使用OLE功能驱动EXECL OLE(Object Linking and Embedding)对象链接与嵌入,是WINDOWS应用程序间相互传递和共享数据的一种有效方法。VFP借助于OLE不仅可共享其它应用程序的数据,而且还能以对象方式直接控制其它应用程序的运行,从而进一步扩展VFP的功能。VFP支持直接在程序中创建、使用和控制OLE对象,实现OLE自动化。作为OLE客户VFP与作为OLE服务器的EXCEL具有良好的编程接口,下述程序段用OLE方式实现所要求的功能。 程序首先生成一个EXCEL的OLE对象OleApp以便对其进行操作,然后利用OLE功能从EXCEL表单中获取欲查询的课程名,并控制EXCEL生成新的工作表,VFP的查询结果仍然使用剪切板的方式传递至EXCEL工作表。 OleApp=CREATEOBJECT(Excel.Application) & 打开EXCEL,产生OLE对象 OleApp.Application.Caption=VFP交互编程 & 指定标题栏名称 OleApp.Application.Visible=.T. & 置EXCEL可见 OleApp.Application.WorkBooks.Open(d:vfpVFP交互.xls) & 打开EXCEL工作簿 DO WHILE .T. WITH OleApp.Application nAnswer = MESSAGEBOX(开始搜索?, 32+4, 搜索指定数据) &产生信息框 IF (.NOT.(nAnswer=6) & 如按下“Yes按钮,则开始搜索,反之退出 EXIT ENDIF .Sheets(查询).Select & 选择“查询”工作表单 SLesson = OleApp.Application.Range(课程名).value & 得到欲查询的课程名称 .Sheets.Add & 新建一工作表单 .ActiveSheet.Name = Slesson & 指定工作表单的名称 SCommand = SELECT 学号,语文,数学 FROM d:vfp学生成绩表 WHERE +ALLTrim(SLesson) + 60 INTO CURSOR TEMP & 形成VFP查询命令串 &Scommand & 执行VFP命令串 _VFP.DataToClip(TEMP,3) & 将搜索结果以文本方式拷贝至剪切板 .Range(a1:a1).Select & 指向拷贝目标区域左上角单元 .ActiveSheet.Paste & 粘贴搜索结果 ENDWITH ENDDO OleApp.Quit & 关闭EXCEL,保存更新后的工作簿文件 三、VFP使用DDE功能驱动EXECL DDE(DynamicDataExchange)动态数据交换,是WINDOWS应用程序间相互传递和共享数据的另一种有效方法,DDE用共享存储器在应用程序间交换数据。DDE会话发生在DDE客户与DDE服务器应用程序之间,客户应用程序向服务器应用程序请求数据和服务,而服务器响应客户应用程序对数据与服务的请求。DDE的数据交换可分三种方式: *冷链接:客户应用程序请求数据时,服务器应用程序才发送数据给客户应用程序; *暖链接:服务器应用程序在每次数据项的值变化时都向客户应用程序发送通告,但它并不直接发送值给客户应用程序,而由客户应用程序决定是否取得该数据; *热链接:服务器应用程序在每次值变化时都发送数据项的新值给客户应用程序。 VFP与EXCEL均支持DDE客户与服务器。下述程序段由作为DDE客户的VFP应用程序与作为DDE服务器的EXCEL用DDE方式实现所要求的功能。 程序首先启动EXCEL,然后在VFP应用程序与“查询”工作表单的“课程名”单元格之间形成“热链接”,当“课程名”单元格内容改变时,将自动执行 “GetData”过程。在该过程中首先直接获取DDE数据,如果该数据为“空”,则关闭EXCEL,程序结束;反之,利用DDEPOKE功能向EXCEL发送键盘命令串,以形成新的工作表,最后VFP将查询结果通过剪切板送EXCEL形成要求的工作表。 PUBLICExcelChan PUBLICSheetChan RUN/N3C:ProgramFilesMicrosoftOfficeOfficeEXCEL.EXE&以“活动”与“最大化方式启动EXCEL ExcelChan=DDEInitiate(Excel,SYSTEM)&初始化DDE通道ExcelChan =DDEExecute(ExcelChan,Open(d:vfpVFP交互.xls)&打开“VFP交互.xls” SheetChan=DDEInitiate(Excel,查询)&初始化DDE通道SheetChan =DDEAdvise(SheetChan,课程名,GetData,2)&在VFP应用程序与“查询”工作表单的“课程名”单元格之间形成“热链接”!如果该单元数值改变,则执行“GetData”过程。 PROCEDUREGetData PARAMETERSChannel,Action,Item,Data,Format,Advise IFAction=ADVISE.AND.Item=课程名&服务器提供的链接名为“课程名” SLesson=Data&直接获取DDE服务器提供的数据 SLesson=LEFT(SLesson,LEN(SLesson)-2)&去掉原始数据尾部的格式字符 IF(LEN(SLesson)=0)&如果指定单元格内容为“空”,则退出 =DDETerminate(SheetChan)&终止DDE通道SheetChan =DDEExecute(ExcelChan,Quit)&退出EXCEL =DDETerminate(ExcelChan)&终止DDE通道ExcelChan ELSE =DDEExecute(ExcelChan,Formula.Goto(课程名)&指定名为“课程名” 的单元格为活动单元格 =DDEExecute(ExcelChan,Copy)&将指定单元格内容拷贝至剪切板 SKey=%IW%OHRVenter&键盘命令字符串,表示“插入(I)|工作表(W);格式(O)|工作表(H)|重命名(R);粘贴” =DDEExecute(ExcelChan,&SKey)&通过DDE通道将命令串送EXCEL WAITWINDOWTIMEOUT2&等待2秒钟以实现上述命令串 SCommand=SELECT学号,语文,数学FROMd:vfp学生成绩表WHERE+ALLTRIM(SLesson)+32、apples。3、COUNTBLANK(range)计算指定单元格区域中空白单元格的数目。即使单元格中含有返回值为 (空文本)的公式,该单元格也会计算在内,但包含零值的单元格不计算在内。4、COUNTA(value1,value2, .)返回参数组中非空值的数目。利用函数 COUNTA 可以计算数组或单元格区域中数据项的个数。value1, value2, . 所要计数的值,参数个数为 130 个。在这种情况下,参数值可以是任何类型,它们可以包括空字符 (),但不包括空白单元格。如果参数是数组或单元格引用,则数组或引用中的空白单元格将被忽略。如果不需要统计逻辑值、文字或错误值,请使用函数 COUNT。生成Excel文件如何设定最适合的列宽?eole.Columns(B:B).EntireColumn.AutoFit sht.range(&sf).Rows.AutoFit sht.range(&sf).Columns.AutoFit -COUNT(value1,value2, .)倒底如何调用才能知道EXCEL当前 SHEET的总行数与总列数?愚昧。看不懂。只好烦请你详细说明。刚试验: 35合并单元格,重要!_ole_excel.Worksheets(工作簿名).Range(范围).merge & 范围必须指定起止的单元格,如A1:B4 好象也合并不了!myexcel.worksheetd(e:zzzxls99.xls).range(a1:b4).merge-1、当前行、当前列没意义;2、水平居中:_ole_excel.WorkSheets(Sheet1).Range(A1:A5).HorizontalAlignment = xlHAlignCenter垂直居中:_ole_excel.WorkSheets(Sheet1).Rows(2).VerticalAlignment = xlVAlignCenter3、合并的是工作簿而非工作表!你那句是指工作表啊-当前的总行数、总列数:.ActiveSheet.UsedRange.rows.count.ActiveSheet.UsedRange.columns.count-能够让打开的窗口作为VFP的子窗口吗?_ole_excel.visible = .t.请问各位高手,在VFP6.0中生成Execl表格,如何设置“顶端标题行”和“左边标题列” With ActiveSheet.PageSetup.PrintTitleRows = $ 1:$ 3.PrintTitleColumns = End With eole.ActiveSheet.PageSetup.PrintTitleRows = $ 1:$ 1eole.ActiveSheet.PageSetup.PrintTitleColumns = $ A:$ AVFP与Excel交互编程VFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员强有力的工具而广为使用; 而Excel则是一个优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势,成为广大办公应用人员必备的首选软件。上述两种软件在各自的应用领域均得到了广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。 本文将结合实例介绍VFP与Excel交互编程的方法,在VFP中除了使用OLE技术外,还可使用DDE技术与外部服务器进行数据交换,本文主要讲解VFP中使用OLE技术与Excel交换数据,Excel中借助内置的VBA使用VFP提供的Application对象来调用VFP中的一些功能。其功能可简述如下:VFP数据表“学生成绩.DBF”中含“学号、姓名、语文、数学”等字段,示例程序将从Excel工作簿“VFP交互.XLS”的工作表“查询”中用“条件”区域(一般为一个矩形区中的数据,该区域名称指定为“条件”,数据形如“语文60”、“数学90”等)中的数据作为查询的条件,用“连接条件”区域(一般为一个单元格,其值为“or”或者“and”)来获取组合“条件”的逻辑连接,并将该连接信息的内容以工作表的形式显示出来,然后调用VFP中针对给定表的SQL查询来找出给定条件的记录并显示到Excel中。下列程序均在VFP 6.0与Excel 2000中调试通过。 Excel驱动VFP Excel内置的VBA语言(Visual Basic For Application)为Excel功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP搜索命令串,其搜索结果再借助于VFP的DataToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置,为了每次运行时能将结果插入到工作表中,依次对操作的工作表以“搜索结果”、“搜索结果1”等进行编号。 Sub exceluseFox () Dim oFox As Object 声明oFox为一个对象 Dim SCommand As String SQL对应的命令串变量 Dim cell As Variant Dim choice As String Dim join As String Dim first As Boolean Dim found As Boolean 搜索结果标志,若表单中有搜索结果,则为真 Set oFox = CreateObject(“VisualFoxPro .Application”) 启动VFP,生成VFP对象 Sheets(“查询”).Select 选择对应的工作表“查询” join = Range(“连接条件”) 在单一表格中的一个元素,其值为and或者or choice = “” 置连接串初值为空 first = True 一般情况下连接串后需要加上逻辑连接符and 或 or,首次例外 For Each cell In Range(“条件”) 产生连接条件,形成where语句的连接逻辑串 If first Then choice = choice + cell 形成第一次出现的where子句后的字符串 first = False 修改首次进入标志,以后的连接均需要加上逻辑连接符 Else choice = choice + “ ” + join + “ ” + cell join的值是and或者是or End If Next cell Sheets.Add 产生新的工作表单 找一个不重复的工作表名 found = False 工作表名中前四个汉字有没有“搜索结果”的标志变量 n = 1 For Each cell In Worksheets If InStr(1, cell.Name, “搜索结果”) 0 Then found = True 找到对应的工作表 If n 名称-定义”来完成对给定区域名称的设定,这个名称可以在VBA中访问,如前述中的“条件”和“连接条件”。 VFP使用Excel OLE(Object Linking and Embedding)对象链接与嵌入,是Windows应用程序间相互传递和共享数据的一种有效方法。VFP借助于OLE不仅可共享其他应用程序的数据,而且还能以对象方式直接控制其他应用程序的运行,从而进一步扩展VFP的功能。VFP支持直接在程序中创建、使用和控制OLE对象,实现OLE自动化。作为OLE客户,VFP与作为OLE服务器的Excel具有良好的编程接口,下述程序段用OLE方式实现所要求的功能。程序首先生成一个Excel的OLE对象OleApp以便对其进行操作,然后利用OLE功能从Excel表单中获取欲查询的条件,并控制Excel生成新的唯一的工作表,通过找寻当前操作的所有工作表达到名称的唯一,VFP的查询结果仍然使用剪切板的方式传递至Excel工作表中。 local condition,where1,first,scommand,cell,newsheet,found1,n OleApp=CreateObject(“Excel.Application”) & 打开Excel,产生OLE对象 OleApp.Application.Caption=“VFP交互编程” & 指定标题栏名称 OleApp.Application.Visible=.T. & 置Excel可见 OleApp.Application.WorkBooks.Open(“d:vfpVFP交互.xls”) & 打开Excel工作簿,用户也可以修改连接条件或者查询条件 where1=“” &保存SQL中where子句的变量 first=.t. &置首次进入“查询”工作表中“条件”区域标志 found1=.f. n=1 DO WHILE .T. WITH OleApp.Application nAnswer = MessageBox(“开始搜索?”, 32+4, “搜索指定数据”) &显示搜索信息 IF (.NOT. (nAnswer=6) & 如按下“Yes”按钮,则开始搜索,反之退出 EXIT ENDIF .Sheets(“查询”).Select & 选取示例中的对应工作表 condition=.range(“连接条件”).value &得到“连接条件”区域中的逻辑连接符 for each cell in .range(“条件”).value &将表单区域内所有单元的数据拼接以形成where的连接逻辑串 If first Then Where1 = Where1 + cell &首次进入时where子句中串前不需要逻辑连接符 first = .f. &置非首次进入标志 Else Where1=Where1 +“ ”+condition +“ ”+ cell &这里condition

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论