vfp调用word OR excel.docx
《vfp调用word OR excel.docx》由会员分享,可在线阅读,更多相关《vfp调用word OR excel.docx(10页珍藏版)》请在冰豆网上搜索。
vfp调用wordORexcel
vfp调用wordORexcel
(一)
1.VFP全面控制EXCL
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:
templl.xls″)
5.显示Excel窗口
eole.visible=.t.
6.更改Excel标题栏
eole.Caption=″VFP应用程序调用MicrosoftExcel″
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-窄行851139-宽行1411)
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:
temp22.xls″)
39.放弃存盘
eole.ActiveWorkbook.saved=.t.
40.关闭工作簿
eole.Workbooks.close
41.退出Excel
eole.quit
2.VFP数据导出至EXCEL问题
这样设计:
oexl=createobject("excel.application")
oexl.workbooks.add
oexl.visible=.t.
oexl.workbooks
(1).activate
oexl.cells(1,1).value="名称1"
oexl.cells(1,2).value="名称2"
oexl.cells(1,3).value="名称3"
3.如何在VFP5.0中利用EXCEL的功能做报表
在VFP中调用Excel要利用Automation。
所有Automation的步骤都一样,先建立对象,然后利用该对象实现VBA语句。
如果你对VBA不熟悉,也可以利用Excel的录制宏的功能得到相应的VBA语句。
下面就是一段打印预览报表的VFP程序:
objExcel=CreateObject("Excel.Application")
objExcel.Visible=1
objExcel.Workbooks.Open("E:
JXCDOSFILEDBF.DBF")
objExcel.ActiveSheet.PageSetup.PrintGridlines=1
objExcel.ActiveWindow.SelectedSheets.PrintPreview
4.如何使用已有的Word模版新建一个文档
可以借助OLEAutomation来做这件事。
如果你使用CreateObject("Word.Application")建立对象。
建立新文档的VBA语句为:
Documents.AddTemplate:
="G:
MicrosoftOfficeOfficeHTML.DOT",NewTemplate:
=False
其中Template是你要引用的模板。
如果你使用CreateObject("Word.Basic")建立对象。
建立新文档的WordBasic语句为:
FileNew("G:
MicrosoftOfficeOfficeHTML.DOT")
下面是一个简单的VFP例子:
objWord=CreateObject("Word.Application")
objWord.Visible=1
ObjWord.Documents.Add("G:
MicrosoftOfficeTemplates中文信函和传真典雅型信函.dot",0)
5.VFP中使用CreatObject实现对Word文件进行操作的方法
publicoleApp,fDoc
oleApp=CreateObject("Word.Application")&&创建应用程序对象oleapp
oleApp.Visible=.t.&&使Word文档可见
fDoc=oleApp.Documents.Add&&创建文档对象Fdoc
*在下一语句中将'欢迎光临Word世界!
'换成你需要的内容送到Word文档,如果有多行,可重复此语句.
oleApp.Selection.TypeText('欢迎光临Word世界!
')
fDoc.SaveAs("c:
Test.doc")&&文件自动存盘为"c:
test.doc"
oleApp.Quit&&退出word
6.在vfp打开"F:
我的文档vfp表格控件.doc"的命令怎么写?
RELEASEloWord
PUBLICloWord
loWord=CREATEOBJECT('word.basic')
*loWord.filenewdefault
loWord.filenew('F:
我的文档vfp表格控件.doc')
*--最大化Word
loWord.appshow
7.在vfp创建"F:
我的文档vfp表格控件.doc"的命令怎么写?
VFP中使用CreatObject实现对Word文件进行操作的方法如下:
oleapp=createobject("word.application")&&创建应用程序对象oleapp
oleapp.visible=.t.&&使Word文档可见
fdoc=oleapp.Documents.Add&&创建文档对象Fdoc
oleapp.Selection.TypeText('欢迎光临Word世界!
')&&在此语句可将'欢迎光临Word世界!
'换成你需要的内容送到Word文档,如果有多行,可重复此语句.
fdoc.saveas("c:
test.doc")&&文件自动存盘为"c:
test.doc"
oleapp.quit&&退出word
8.轻松建立属于自己的Word模板
我们知道,当每次进入Word时,系统都会自动新建一个空白文档,并分配一个名称为“文档1”的文档。
而我们在实际应用中,常用到的不是这种默认设置。
如学校办公室经常上传、下达文件,每次将文件内容录完以后,都要进行字体、字号、纸型等多项设置。
是否有一种方法来简化文档的设置工作,使每次新建空白文档时直接打开这一设置好格式的文档呢?
答案当然是肯定的,我们可以用Word的模板功能来实现。
任何Word文档都是以模板为基础进行创建的。
模板决定了文档的基本结构和设置的样式,模板就是包含有段落结构、字体样式和页面布局等元素的样式。
我们在新建一文档时实际上是打开了一个名为“normal.doc”的文件。
该文件的位置一般位于:
C:
WindowsApplicationDataMicrosoftTemplates(也可通过开始菜单查找一个位置)文件夹下,具体操作方法如下:
1.打开C:
WindowsApplicationDataMicrosoftTemplates文件夹下的“normal.doc”文档,将各项设置改成你所需的样式;
2.点击文件下拉菜单中的“另存为”,在“另存为”对话框中输入要保存的文件名,保存类型选择“文档模板”,单击“确定”;
3.最后关闭该文档窗口。
以后每打开这一文件时,它的默认格式就是你在第1步设置的格式了。
编辑提示:
1.此法对原文件normal.doc没有影响;
2.此法对WPS也适用。
只是“normal.wps”位于c\wps2000\template目录下。
怎么样?
感觉是不是很方便,那就赶快试试吧,也可以根据需要多建几个模板哟!
9.数据库的内容转到EXECL文件中
COPYTO"c:
你的表.xls"TYPEXL5
eole=CREATEOBJECT('Excel.application')&&创建Excel对象
eole.Workbooks.Open("c:
你的表.xls")&&打开指定工作簿
eole.visible=.t.&&显示Excel窗口
10.从VFP中导出数据的几种方法!
答:
当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应
用程序(如Excel等)所用。
下面向你简单介绍几种导出数据的方法:
1.用“导出数据”对话框。
你可以从VFP主菜单中选择“文件/导出…”打开
“导出”对话框,在该对话框中的“来源”框中输入表名(c:
vfpstudents.dbf
),在“类型”中指定要导出数据的类型(MicrosoftExcel),在“到”框中输入
导出的路径和文件名(C:
excelaa.xls),然后按“确定”即可。
这时你如果查看
command窗口,可发现以下代码:
COPYTOC:
excelaa.XLSTYPEXL5
2.用COPYTO命令。
COPYTO命令的工作对象是VFP中的表,它要依据“TYPE”
项才知道要产生哪一类导出文件。
对于上面的导出过程,可用以下方法实现:
USEstudents
COPYTOC:
excelaa.XLSTYPEXL5
12.在VFP6中,如何调用已经存在的WORD文件?
oW=CREATEOBJECT([word.basic])
withoW
.Apprestore()
.Appmaximize()
.fileopen("路径+文件名.扩展名")
ENDWITH
13.打开word文件的控件?
用RUN/N3C:
WORD.EXE文档路径
C:
WORD.EXE是我自己写的,你用时换成WORD的真正路径就行了!
比如用WORD打开SD.DOC就写
RUN/N3C:
WORD.EXEC:
SD.DOC
另:
TXLS_EOLE=CREATEOBJECT('word.application')
TXLS_EOLE.Documents.Open('文件名.doc')
TXLS_EOLE.Visible=.t.
注意:
别忘了关闭哦
TXLS_EOLE.Documents.close&&关闭文档
TXLS_EOLE.quit&&关闭word
RELEASETXLS_EOLE&&释放对象
再者:
fw=alltrim(this.value)
iffile('&fw')
*documents.openfilename('&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文件。
命令格式:
runc:
\..\*.exe
当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。
一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。
可以通过加上/n来隐藏这个窗口。
例如运行Windows下的扫雷游戏,命令格式如下:
RUN/nC:
\Windows\Winmine.exe
下面运行一个更复杂一点的程序。
调用word打开c:
\下的一个名为mlx.doc的word文件,命令格式如下:
run/n3C:
\ProgramFiles\MicrosoftOffice\Office\Winword.exeC:
\mlx.doc
参数:
n在运行时隐藏VFP的黑色窗口。
3表示以最大化的方式运行程序。
1正常方式、2最小化方式、3最大化方式
在这种情况下,可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,而在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其绝对路径。
比如,在上例中,我们可能无法确定用户的word到底安装在什么地方,如果用户把word安装到了别的地方,上述命令便会出错。
再如,一个.gif文件,有的用户喜欢用ACDSee来打开,有的用户喜欢用IE来打开,有的用户喜欢用豪杰来打开,……
为了解决这种情况我们可以调用Windows的文件关连来打开文件。
即所有的文件都用系统默认的程序来打开。
这就要调用Windows的Win32API函数。
调用方式如下:
DECLAREINTEGERShellExecuteINshell32.DLLINTEGERHWND,;
STRINGlpszOP,;
STRINGlpszFile,;
STRINGlpszParams,;
STRINGlpszDir,;
INTEGERfsshowcmd
DECLAREINTEGERGetDesktopWindowINwin32api
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.exeReadme.txt’,SW_SHOW);
ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。
首先必须引用shellapi.pas单元:
usesShellAPI;
(1).标准用法
ShellExecute函数原型及参数含义如下:
functionShellExecute(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函数
DECLAREINTEGERShellExecuteINshell32.DLLINTEGERHWND,;
STRINGlpszOP,;
STRINGlpszFile,;
STRINGlpszParams,;
STRINGlpszDir,;
INTEGERfsshowcmd
*声明GetDesktopWindow函数,该函数激活Windows桌面
DECLAREINTEGERGetDesktopWindowINwin32api
*指定从Windows桌面上运行ShellExecute函数
HWND=GetDesktopWindow()
lpszOP=""
*指定ShellExecute操作的文件为
lpszFile='http//:
lpszParams=""
*指定ShellExecute的缺省目录为C:
lpszDir="C:
"
fsshowcmd=1
*执行ShellExecute命令
*LNRETURN=
ShellExecute(HWND,lpszOP,lpszFile,lpszParams,lpszDir,fsshowc