VF中控制EXCEL的常用操作Word格式文档下载.docx
- 文档编号:20822002
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:41
- 大小:48.69KB
VF中控制EXCEL的常用操作Word格式文档下载.docx
《VF中控制EXCEL的常用操作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《VF中控制EXCEL的常用操作Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。
a1'
).Formula='
=sum(b2,b3,b4,b5)'
在A1中键入一个公式
myexcel.range('
).ClearContents
"
@"
设置选中的区域为字符型数据
*
myexcel.quit&
excel
********************************************************
*生成一个表并显示可用的sheets
oExcel=CREATE("
Excel.Application"
FOREACHoMyVarINoExcel.sheets
?
oMyVar.name
NEXToMyVar
在
VFP
中控制
Excel
的小小经验集
获取工作表名称
在以下示例中,创建了一个microsoftexcel实例,添加了一个新的工作簿。
使用foreach语句显示工作簿中每个工作表的名称。
此示例要求在运行示例的机器上正确安装microsoftexcel。
Excel报表巧生成
巧让FoxPro数据生成Excel报表
VisualFoxPro是应用广泛的前台数据库开发平台之一,因此在我们日常工作中时常会遇到DBF数据文件。
然而随着办公自动化的普及,越来越多的时候需要将DBF文件转化为Excel电子文档。
常用转化方法是在FoxPro中用Copy命令进行格式转化或直接用Excel打开DBF文件。
这两种方式虽然都能达到目的,却不能得到格式规范、可以直接打印输出的报表,且输出的Excel文件中,无法对数据类型进行有效转换,极易出现数据统计错误。
有没有更好的方法呢?
这里有一个更加通用的方法,在VFP中调用Excel,可以由DBF文件直接生成格式如下图所示一样复杂的Excel报表(如图1)。
Excel报表
具体过程如下:
编辑推荐文章
●新鲜接触Excel2000XP
●Excel2000公式应用的几条经验
●Excel2000函数应用之信息函数
假设我们要将表Agcallop.dbf文件输出为Excel格式文档,报表形如图1所示。
为使通用性更强,页面采用A4纸横向输出,默认字体为宋体10号,页脚处添加页号。
部分程序代码如下:
m.outfilename=putfile('
输出结果'
'
agcallop'
xls'
取导出文件名称
ef=CREATEOBJECT('
Excel.application'
调用Excel程序
添加工作簿
ef.Worksheets("
sheet1"
).Activate
激活第一个工作表
ef.visible=.t.
显示Excel界面
选择整张表
=10
设置整表默认字体大小为10
select0
useagcallop
选择被导出的表
num=reccount()
求导出总记录数
gotop
i=5
ef.range("
F1:
K1"
).Select
选择标题栏所在单元格
合并单元格
withef.range("
F1"
设置标题及字体属性
.value='
客户服务部业务代表工作量情况统计表'
.Font.Name="
黑体"
.Font.size=18
ef.Rows
(2).RowHeight=1/0.035
设置第二行高度为1cm
H2:
O2"
选定统计条件栏所在单元格
H2"
).Font.size=10
).HorizontalAlignment=4
设置内容对齐方式为右对齐,3为居中,2为右对齐
).value='
统计时间:
'
+dtoc(date())+'
打印日期:
+dtoc(date())
ef.Rows("
3:
4"
withef.Selection
.HorizontalAlignment=3
设置3、4行为水平对齐
.VerticalAlignment=2
垂直居中
.NumberFormatLocal="
设置3、4行为字符型内容
ef.Range("
A3:
A4"
纵向合并第一列3、4行
A3"
工号'
设置第一列标题内容
ef.Columns("
A"
整列选择
=3
水平居中
A:
B"
="
设置A、B列为字符型内容
B3:
B4"
纵向合并第二列3、4行
B3"
姓名'
设置第二列标题内容
C3:
E3"
横向合并第三行C-E列
C3"
话务总量'
第三行大标题为“话务总量”的列
C4"
电话呼入量'
“话务总量”下第1个小标题“电话呼入量”
D4"
电话呼出量'
“话务总量”下第2个小标题“电话呼出量”
E4"
合计'
“话务总量”下第3个小标题“合计”
F3:
H3"
F3"
话务总时间'
F4"
呼入时间'
G4"
呼出时间'
H4"
I3:
K3"
I3"
单个话务平均时间'
I4"
J4"
K4"
L3:
L4"
L3"
累计工作时间'
M3:
M4"
M3"
无效时间'
N3:
N4"
N3"
录入量'
O3:
O4"
O3"
有效时间比'
接下来通过scan语句,依次为每一行每一列单元格赋值。
为了获得更好的打印效果,还需进行页面设置,如标题行、页面居中、横向排版等,还可以加边框线。
以上程序在VFP6+Excel2000+Windows2000下调试通过。
实际应用中可根据需要对各项参数设置进行相应调整。
FOX控制EXCL文件另存为DBF(EXCL后台运行)
fil=&
其值为一个包含路径的文件名
eole=CREATEOBJECT('
打开文件
关闭(如果无则打开)自动筛选
eole.Range("
A1:
F1000"
).Select&
选中从第1行到1000行的前6列数据(另存后只有这些数据)
asfil=STRTRAN(UPPER(STRTRAN(fil,SUBSTR(fil,1,RAT('
\'
fil)),'
c:
\windows\desktop\cphz\'
)),'
.XLS'
.dbf'
)&
要保存的文件名
IFFILE(asfil)
DELETEFILE&
asfil
ENDIF
8)&
另存为DBF
不保存当前EXCL表
关闭表
eole.quit&
退出EXCL
RELEASEeole&
释放变量
虽然用APPENDFROMtx.xlsTYPEXL8可以更简单的追加数据,但有时会导致程序非法错误退出(不知是不是因为非法字符),而且还有一定的限制
实用的VFP与EXCEL交互编程
邹益民
摘要:
本文介绍了几种实用的VFP与EXCEL交互编程的方法与实例,将VFP强大的数据处理功能与EXCEL优异的制表功能有机地结合起来,大大增强了软件的应用效果。
关键词:
VFP、EXCEL、DDE、OLE、交互编程。
SomeCross_ProgrammingMethodsBetweenVFPandEXCEL
Zouyiming(GansuLanzhouSectionofInstrumentsLanzhouPetrochemicalStaffCollege)
Abstract:
Theauthorintroducesusinthispapersomepracticalmethodsandinstanceofcross_programmingbetweenVFPandEXCEL.ItextremelyimprovestheirperformancesbycombiningVFP'
sdataprocessingfunctionswithEXCEL'
sexcellenttabulationfunctions.
KeyWords:
VFP、EXCEL、OLE、DDE、Cross-Programming
VFP(VisualFoxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员的强有力工具,而EXECL则是一种优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势。
上述两种软件在各自的应用领域均得到广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。
本文将结合具体实例介绍几种VFP与EXCEL交互编程的方法,每种方法虽然实现手段各异,但功能相仿。
其功能可简述如下:
VFP数据表“学生成绩表.DBF”中含“学生姓名”、“语文”、“数学”......等字段,示例程序将从EXCEL工作簿“VFP交互.XLS”之工作表“查询”中用书签“课程名”指定的单元取得欲查询的课程名称,然后在数据表“学生成绩表.DBF”中自动搜索,以找到该门课程不及格的同学名单,最后传送至原EXCEL工作薄形成新的工作表单,同时,新工作表还将以该课程名命名。
下列程序均在VFP5.0与EXCEL97中调试通过。
因篇幅所限,程序中的错误处理部分略去。
一、EXECL驱动VFP
EXECL内置的VBA语言(VisualBasicForApplication)为EXECL功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。
程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP摸索命令串,其摸索结果再借助于VFP的DateToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置。
SubFoxTest()
DimoFoxAsObject
DimSLessonAsString
DimSCommandAsString
SetoFox=CreateObject("
VisualFoxPro.Application"
)'启动VFP,生成VFP对象
Sheets("
查询"
SLesson=Range("
课程名"
)'在名为“课程名”的单元格中得到欲查询的课程名称
Sheets.Add'产生新的工作表单
ActiveSheet.Name=Slesson'指定工作表单的名称与课程名称相同
SCommand="
SELECT学号,语文,数学FROMd:
\vfp\学生成绩表WHERE"
+SLesson+"
<
60INTOCURSORTEMP"
'形成VFP查询命令串
oFox.DoCmdScommand'执行VFP命令串
oFox.DataToClip"
temp"
,3'将搜索结果以文本方式拷贝至剪切板
Range("
a1:
a1"
).Select'指向拷贝目标区域左上角单元
ActiveSheet.Paste'粘贴搜索结果
EndSub
为便于使用,作者在EXECL中自制了一名为“搜索”的工具栏及一名为“开始搜索”的按钮,并将上述宏程序段与自制按钮相关联,按下此按钮即可运行程序并在EXCEL中得到要求的数据。
制作工具栏及按钮的方法如下:
1.选“工具”/“自定义”菜单,出现自定义对话框;
2.选择“工具栏”页框,然后按下“新建”按钮;
3.在工具栏对话框中输入“搜索”作为新建工具栏的名称;
4.选择“命令”页框,在“类别”列表中选“宏”,在“命令”列表中选“自定义按钮”并将其拖放至新建的“搜索”工具栏;
5.按下“更新所选内容”按钮,首先在“命名”栏中填入按钮名称“开始搜索”,然后选择“指定宏”,在随后出现的“指定宏”列表中选择上述宏程序FoxTest()即可实现为该宏指定一个工具栏按钮。
二、VFP使用OLE功能驱动EXECL
OLE(ObjectLinkingandEmbedding)对象链接与嵌入,是WINDOWS应用程序间相互传递和共享数据的一种有效方法。
VFP借助于OLE不仅可共享其它应用程序的数据,而且还能以对象方式直接控制其它应用程序的运行,从而进一步扩展VFP的功能。
VFP支持直接在程序中创建、使用和控制OLE对象,实现OLE自动化。
作为OLE客户VFP与作为OLE服务器的EXCEL具有良好的编程接口,下述程序段用OLE方式实现所要求的功能。
程序首先生成一个EXCEL的OLE对象OleApp以便对其进行操作,然后利用OLE功能从EXCEL表单中获取欲查询的课程名,并控制EXCEL生成新的工作表,VFP的查询结果仍然使用剪切板的方式传递至EXCEL工作表。
OleApp=CREATEOBJECT("
打开EXCEL,产生OLE对象
VFP交互编程"
指定标题栏名称
置EXCEL可见
d:
\vfp\VFP交互.xls"
打开EXCEL工作簿
DOWHILE.T.
WITHOleApp.Application
nAnswer=MESSAGEBOX("
开始搜索?
32+4,"
搜索指定数据"
产生信息框
IF(.NOT.(nAnswer=6))&
如按下“Yes"
按钮,则开始搜索,反之退出
EXIT
.Sheets("
选择“查询”工作表单
SLesson="
).Value&
得到欲查询的课程名称
.Sheets.Add&
新建一工作表单
.ActiveSheet.Name=Slesson&
指定工作表单的名称
+ALLTrim(SLesson)+"
形成VFP查询命令串
Scommand&
执行VFP命令串
_VFP.DataToClip("
TEMP"
,3)&
将搜索结果以文本方式拷贝至剪切板
.Range("
指向拷贝目标区域左上角单元
.ActiveSheet.Paste&
粘贴搜索结果
ENDWITH
ENDDO
OleApp.Quit&
关闭EXCEL,保存更新后的工作簿文件
****************************************
那个是关闭excel啊~~不是存盘~关闭了就不能存盘了
设置打印参数:
问:
用Excel做报表,可打印时怎么选择打印机,即.
答:
expression.PrintOut(From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrToFileName)
expression
必选。
该表达式返回“应用于”列表中的某个对象。
From
Variant类型,可选。
打印的开始页号。
如果省略该参数,将从起始位置开始打印。
To
打印的终止页号。
如果省略该参数,将打印至最后一页。
Copies
要打印的份数。
如果省略该参数,将只打印一份。
Preview
如果为True则MicrosoftExcel打印指定对象之前进行打印预览。
如果为False,或者省略此参数则立即打印该对象。
ActivePrinter
设置活动打印机的名称。
PrintToFile
如果为True则打印输出到文件。
如果没有指定PrToFileName,则MicrosoftExcel将提示用户输入要输出文件的文件名。
Collate
如果为True则逐份打印每份副本。
PrToFileName
可选,Variant类型。
如果将PrintToFile设置为True,则本参数指定要打印到的文件名。
说明
From参数和To参数所描述的“页”指的是要打印的页,并非指定工作表或工作簿中的全部页。
如何用编程的方法打开有密码的Excel文件?
问题:
Excel文件加了密码,如何在VFP中用编程的方式把密码输入,使Excel文件打开
如:
\22.xls"
这样还有一个密码的对话框出来,需要输入密码才能打开文件。
如何用编程的方法直接打开有密码的Excel文件?
答:
.f.,.f.,,"
123"
"
456"
表示打开权限的密码,
表示修改权限的密码.
----------------------------------------------
问题一:
如何将一个已知路径的图片插入到excel中.
图片文件名"
问题二:
能不能指定在某一位置或区域放置图片并控制图片显示大小呢?
OLEAPP.SHEETS
(1).SELECT
oleapp.Range("
位置"
)).Select
=.T.
=57
类型为字符型的字段输出到excel中,前面的零被自动去掉,例如“009877”变为“9877”,怎么解决?
1.在字符串前面加半角单引号“'
”
2.
Y1"
在Excel中插入行和列:
objExcel.Rows
(1).Insert()
在第一行前面插入一行
objExcel.Columns
(2).Insert()
在第二列前面插入一列
获取Excel记录数
loXls=CREATEOBJECT("
excel.application"
bookExcel="
f:
\pz.xls"
nrows=bookExcel.Worksheets('
pz'
UsedRange=nrows.UsedRange
r=
行数
c=&
列数
在EXCEL中如何在打开文件的同时自动执行一个宏命令。
只要将宏的命名为AUTO_OPEN即可。
如果要在文件关闭时运行,则命名为auto_close。
问:
在VFP中可以执行EXCEL的选择性粘贴吗?
A2"
).PasteSpecial("
xlPastues"
)
会出错
).PasteSpecial(3)
也会出错
).PasteSpecial
只好这样了
如何才能只粘贴值呢?
=====================================================
xlPastues=-4163
oExcel.Range("
A1"
B1"
)._PasteSpecial(xlPastues)
注意:
在Excel中,"xlPastues"是一个常量,它的值是一个数值型的:
-4163
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VF 控制 EXCEL 常用 操作