当前位置: 代码迷 >> VFP >> vfp导出excel的步骤探讨
  详细解决方案

vfp导出excel的步骤探讨

热度:9615   发布时间:2013-02-26 00:00:00.0
vfp导出excel的方法探讨
方法一:
Use**.dbf
Copy To Excel333.Xls Type Xl5 
方法二:
local myfield     

yfilename=getfile("**.dbf")&&得到源表       

 myoleapp=createobject("excel.application") &&创建OLE对象 

myoleapp.visible=.t.

myoleapp.workbooks.add

use 1.dbf &&myfilename
for i=1 to fcount()
      myoleapp.cells(1,i).value=field(i)
endfor
scan
     for i=1 to fcount()
             myfield=fields(i)
             myoleapp.cells(recno()+1,i).value=&myfield
     endfor
endscan
myoleapp.quit

还有没有其他的方法!
            
------解决方案--------------------------------------------------------
1、
_CLIPTEXT=''
SELECT bh,xm FROM  h:\gzkd\jzg INTO CURSOR dd
SELECT dd
COPY TO dd1.txt sdf
_CLIPTEXT =FILETOSTR('dd1.txt')
2、
SELECT qq,bh,xmold,dwold,xfgzold,zfgzold,bfold,xm,dw,xfgz,zfgz,bf FROM r:\temp\qwe INTO CURSOR dd
 _vfp.DataToClip('dd',,3)
 ZX = CREATEOBJECT('excel.application',' ')
zx.ActiveSheet.Paste 
------解决方案--------------------------------------------------------
3
Set oConnection = CreateObject("adodb.connection")
Set dd = CreateObject("adodb.recordset")
With oConnection
  .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ThisWorkbook.FullName + ";Extended Properties='excel 8.0;HDR=YES;IMEX=1';Persist Security Info=False"
  .Open
End With
dd.Open "select trim(订单号) as 订单号,count(*) as gs from [sheet1$] group by trim(订单号)", oConnection
"select * from (select trim(订单号) as 订单号,count(*) as gs from [sheet1$] group by trim(订单号)) where gs=1", oConnection
Sheets.Add
Sheets(1).Range("a1").CopyFromRecordset dd
------解决方案--------------------------------------------------------
      
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. 选“工具”/“自定义”菜单,出现自定义对话框;
  相关解决方案