vfp调用word OR excel(二)
10. 从VFP中导出数据的几种方法!
答: 当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应
用程序(如Excel等)所用。下面向你简单介绍几种导出数据的方法:
1.用“导出数据”对话框。你可以从VFP主菜单中选择“文件/导出…”打开
“导出”对话框,在该对话框中的“来源”框中输入表名(c:vfpstudents.dbf
),在“类型”中指定要导出数据的类型(Microsoft Excel),在“到”框中输入
导出的路径和文件名(C:excelaa.xls),然后按“确定”即可。这时你如果查看
command窗口,可发现以下代码:
COPY TO C:excelaa.XLS TYPE XL5
2.用COPY TO命令。COPY TO命令的工作对象是VFP中的表,它要依据“TYPE”
项才知道要产生哪一类导出文件。对于上面的导出过程,可用以下方法实现:
USE students
COPY TO C:excelaa.XLS TYPE XL5
12.在VFP6中,如何调用已经存在的WORD文件?
oW = CREATEOBJECT([word.basic])
with oW
.Apprestore()
.Appmaximize()
.fileopen("路径+文件名.扩展名")
ENDWITH
13.打开word文件的控件?
用RUN /N3 C:WORD.EXE 文档路径
C:WORD.EXE是我自己写的,你用时换成WORD的真正路径就行了!
比如用WORD 打开SD.DOC 就写
RUN /N3 C:WORD.EXE C:SD.DOC
另:TXLS_EOLE = CREATEOBJECT('word.application')
TXLS_EOLE.Documents.Open('文件名.doc')
TXLS_EOLE.Visible=.t.
注意:别忘了关闭哦
TXLS_EOLE.Documents.close &&关闭文档
TXLS_EOLE.quit &&关闭word
RELEASE TXLS_EOLE &&释放对象
再者:
fw=alltrim(this.value)
if file('&fw')
*documents.open filename('&fw')
wrdapp = createobject("word.application")
wrdapp.visible=.t.
*wrdapp.documents.add
wrdapp.documents.open(alltrim(this.value))
else
messagebox(fw+chr(13)+'文件不存在,请确认',0+16,'文件路径出错')
RETURN(.F.)
ENDIF
14.在表单中创建一个编辑框,用来显示WORD文档!
做一个按扭,在CLICK中写:THISFORM.EDIT1.value=FILETOSTR(GETFILE('DOC'))
这个不也行,而且还简单
15.强烈建议: 直接使用ole可以在表单中打开word,建议不使用这种办法,改为利用api用windows默认的程序打开word,数据库只存储word文档所在的位置和名字。
16在VFP中调用其他的程序
在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式:
run c:\..\*.exe
当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。
一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows下的扫雷游戏,命令格式如下:
RUN/n C:\Windows\Winmine.exe
下面运行一个更复杂一点的程序。调用word打开c:\下的一个名为mlx.doc的word文件,命令格式如下:
run /n3 C:\Program Files\Microsoft Office\Office\Winword.exe C:\mlx.doc
参数:n 在运行时隐藏VFP的黑色窗口。
3 表示以最大化的方式运行程序。1正常方式、2最小化方式、3最大化方式
在这种情况下,可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,而在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其绝对路径。比如,在上例中,我们可能无法确定用户的word到底安装在什么地方,如果用户把word安装到了别的地方,上述命令便会出错。再如,一个.gif文件,有的用户喜欢用ACD See来打开,有的用户喜欢用IE来打开,有的用户喜欢用豪杰来打开,……
为了解决这种情况我们可以调用Windows的文件关连来打开文件。即所有的文件都用系统默认的程序来打开。这就要调用Windows的Win32 API函数。调用方式如下:
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
DECLARE INTEGER GetDesktopWindow IN win32api
HWND = GetDesktopWindow()
lpszOP = "open"
* 指定要打开的文件名
lpszFile ="c:\mlx.doc"
lpszParams = ""
lpszDir = "c:\temp"
fsshowcmd = 1
* 执行ShellExecute命令
LNRETURN = ShellExecute(HWND,lpszOP,lpszFile,lpszParams,lpszDir,fsshowcmd)
可以用任意的文件名来替换上文中的 c:\mlx.doc 。如果指定的文件名Windows无法找到相应的关连程序,这时程序将不会做出反应。有关的参数可以自行偿试进行修改,以达到最佳效果。
(以上的“\”也可以写成“” 王卫东试验过)
(紧接着看下面的ShellExecute使用详解)
17.调用ShellExecute()函数打开网页
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。
WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW);
ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。
首先必须引用shellapi.pas单元:uses ShellAPI;
(1).标准用法
ShellExecute函数原型及参数含义如下:
function ShellExecute( HWND; Operation, FileName, Parameters,Directory; ShowCmd)
●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。
●Operation:用于指定要进行的操作。最常用的动词是 "Open", 其它可用的动词是 "edit","print","explore" 和 "properties".其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。
●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。
●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。
●Directory:用于指定默认目录。
●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。
若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。
上述仅仅是ShellExecute函数的标准用法,下面将介绍它的特殊用法。
(2).特殊用法 (已在《金乡县宅基地管理系统》的“欢迎表单”这使用)
在label属性中定义mousepointer=99&&自定义鼠标指针(这里是手型)
在label的init事件中添加如下代码:
this.MOuseicon='HAND.CUR' &&设定当鼠标移动到该标签时鼠标会变成一
只小手。要有一个小手的.cur文件,我是在QQ中找到的。
******* ********
* 通过调用win32API函数实现打开网页代码 *
******* ********
* 声明ShellExecute函数
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
* 声明GetDesktopWindow函数,该函数激活Windows桌面
DECLARE INTEGER GetDesktopWindow IN win32api
* 指定从Windows桌面上运行ShellExecute函数
HWND=GetDesktopWindow()
lpszOP=""
* 指定ShellExecute操作的文件为
lpszFile='http//:blog.sina.cn/u/1279340340'
lpszParams=""
* 指定ShellExecute的缺省目录为C:
lpszDir="C:"
fsshowcmd=1
* 执行ShellExecute命令
*LNRETURN=
ShellExecute(HWND,lpszOP,lpszFile,lpszParams,lpszDir,fsshowcmd)
VFP调用Windows的文件关连来打开文件(本例为.jpg文件,已成功使用!)。
**调用Windows的文件关连来打开文件代码(本例为.jpg文件)。即所有的文件都用系统默认的程序来打开。这就要调用Windows的Win32 API函数。调用方式如下:
IF EMPTY(THISform.text2.VALUE)
MESSAGEBOX('请先按“......”按钮选中所要打开的图像文件',64,'系统提示')
ELSE
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
DECLARE INTEGER GetDesktopWindow IN win32api
HWND = GetDesktopWindow()
lpszOP = "open"
* 指定要打开的文件名
lpszFile =ALLTR(THISform.text2.VALUE)
lpszParams = ""
lpszDir = "d:图像资料" &&用于指定默认目录, 可设定为存放照片的文件夹,也可设为空值('')。
fsshowcmd = 1
* 执行ShellExecute命令
LNRETURN = ShellExecute(HWND,lpszOP,lpszFile,lpszParams,lpszDir,fsshowcmd)
IF LNRETURN<32 &&返回值小于32,则表示出现错误(查找的文件不存在)。
MESSAGEBOX('查找的文件不存在!',64,'系统信息')
ENDIF
ENDIF
Visual FoxPro调用win32API函数打开.DOC .TXT文件(未经验证)
* 打开 Word 来编辑文件 "c:mywordfile.doc"
=Shellexecute(0,"Open","c:mywordfile.doc","","",1)
* 打开默认的邮件阅读器来发一封信给天堂版主
=Shellexecute(0,"Open","mailto:njjane@21cn.com","","",1)
* 打印文本文件 "c:mytextfile.txt"
=Shellexecute(0,"Print","c:mytextfile.txt","","",1)