VFP中如何控制EXCEL?

begining 2003-05-20 02:41:32
请教哪位高手有比较全面的关于VFP中控制EXCEL的语句。
给贴一贴!!!
tobegining@sina.com
...全文
78 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
begining 2003-05-27
  • 打赏
  • 举报
回复
录的宏不是vfp的,要转化。很麻烦,但还是解决了。多谢了!
rida 2003-05-21
  • 打赏
  • 举报
回复
你在excel中把相应的动作录一下宏不就知道了。
begining 2003-05-20
  • 打赏
  • 举报
回复
好像这里面关于格式的控制方法不够齐全
比如:合并单元格,垂直对齐方式,换行。
yaleyuan 2003-05-20
  • 打赏
  • 举报
回复
用Visual Foxpro 设计用Excel表格的程序

利用OLE Automation 设计Excel 应用程序
Excel支持的对象说明:
(a) VBA 对象:
对象名称 意义
Application Excel应用程序对象
WorkBooks Excel活页薄对象

(b)所使用的Method
对象名称 Method 执行意义
Application Cells 设定或传回来某个网格的内容
Range 传回或设定某一个范围的网格
Charts 传回或设定活页簿的单一统计表
Quit 结束 Excel Application
Save 激活存储文件对话框
WorkBooks Add 新增一个工作簿
Charts Add 新增一个统计图

(c)所使用的Property
对象名称 Property 设定意义
Application Visible 是否现实再 SCREEN上 .T. , .F.
Value 传回或者设定存储文件的内容
ActiveSheet 回应Excel Application 执行工作表对象

实例说明:
启动Excel:
MyExcel=CreateObject('Excel.Application') &&建立Excel对象
MyExcel.Visible=.T. &&让Excel对象再屏幕上显示出来

如何增加工作簿:
MyExcel.WorkBooks.Add &&在Excel对象中增加一份工作簿(WorkBook)

如何在工作簿中增加Sheet(工作表)
MyExcel.Sheets.Add &&增加工作表(在当前工作簿中)

如何删除工作表
MyExcel.ActiveWorkBooks.Sheets(1).Delete &&把工作簿中的BOOK(1) 删除

向指定的工作簿中的工作表(Sheet)中存储数据
*Excel.application Object
*Excel.application.ActiveWorkBook Property
*WorkBOoks Object
*WorkBOoks Object的Add Method.
*Sheets对象
*Sheets(Index)对象指定索引工作表
*Excel.Application对象的Cells Method结合Value属性

Example:
CLEAR ALL
SET PATH TO SYS(2004)+'SAMPLES\DATE'
USE CUSTOMER
MYEXCEL=CREATEOBJEXT('EXCEL.APPLICATION')
MYEXCEL.VISIBLE=.T.
MYEXCEL.WORKBOOKS.ADD
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).VALUE='客户编号'
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,2).VALUE='公司行号'
SELECT CUSTOMER
R=2
C=1
GOTO TOP
FOR I=1 TO 20
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C).VALUE=CUSTOMER.CUST_ID
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(R,C+1).VALUE=CUSTOMER.COMPANY
R=R+1
SKIP
ENDFOR

调整单元格宽度:
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).columnwidth=30
调整单元格对齐方式:
MYEXCEL.ACTIVEWORKBOOK.SHEETS(1).CELLS(1,1).horizontalalig=1
1为默认方式,2为左对齐,3为中对齐,4为右对齐。

如何将数据存储:
MYEXCEL.SAVE()
注:可以用Save(FileName)指定预存储文件名, 则可不用激活SAVE AS 窗口

如何打印表格:
MYEXCEL.ActiveWorkBook.PrintOut &&默认打印增个Sheet

如何指定打印表格:
MYEXCEL.ActiveWorkBook.PrintOut(1,1,1,.T.) &&默认打印增个Sheet
PrintOut有四个参数
A. 数值:,表示指定的工作簿中进行打印的Sheet 的开始编号
B. 数值:,表示指定的工作簿中进行打印的Sheet 的结束编号
C.打印分数.
D.是否进行 Preview, .T.,预览, .F.打印

如何产生统计图
CURROW=MYEXCEL.ACTIVESHEET.ROWS.COUNT
RANGESTRING='A1:'+'B'+ALLTRIM(STR(CURROW))
MYEXCEL.RANGE(RANGESTRING).SELECT
MYEXCEL.CHARTS.ADD

结束EXCEL
MYEXCEL.QUIT

EXCEL.ActiveWindow.SelectedSheets.PrintPreview &&预览打印
EXCEL.ActiveWorkbook.SaveAs("C:\My Documents\Book1.xls") &&另存为

EXCEL.ActiveWorkbook.Close &&关闭一个工作表,如果有修改则提示
EXCEL.ActiveWorkbook.Close(.t.) &&提示另存为
EXCEL.ActiveWorkbook.Close(.f.) &&关闭一个工作表不用提示是否存盘


使用VFP读取EXCEL的数据示例 *!* *****数据导入程序,由“学生基本基本情况表模板.xls”导入数据 *!* ***使用VFP控制EXCEL表,计取指定列的内容*********** *!* "学生基本基本情况表模板.xls"的数据布局 *!* cells(1,1):“标题” *!* cells(2,1):校区 *!* cells(2,3):学历 *!* cells(2,5):专业 *!* cells(2,6):班级 *!* *!* set safe off set talk on LOCAL inf(4) as String *dele file C:\MyDocu~1\Resume.xlw objExcel = CreateObject("Excel.Application") &&创建一个EXCEL应用程序实例 wjm=getfile("xls") objExcel.Workbooks.Open(wjm) &&调用workbooks(Microsoft Excel 应用程序; 当前打开的所有 Workbook 对象的集合。); 对象的open方法程序来打开指定的文件,并为; 打开的文件创建一个新的工作簿 *objexcel.visible=.f. ***下面的代码判断出生日期字段的格式是否满足要求*** *IF !varTYPE(objexcel.cells(10,6))="d" * MESSAGEBOX("出生日期字段不满足格式要求,不能导入,请将出生日期字段修改为:"+CHR(13); +"mm.dd.yy的格式,如:05.19.83 表示1983年5月19 然后再运行此导入程序") * RETURN *ENDIF inf(1)=substr(objexcel.cells(2,1).value,7)&&校区 Inf(2)=objexcel.cells(2,4).value&&学历 inf(3)=objexcel.cells(2,6).value&&专业 inf(4)=objexcel.cells(2,7).value&&班 LOCAL nrow as Number ,i as Number i=0 *MESSAGEBOX("计算行数") *MESSAGEBOX(objexcel.cells(5,1).value) *MESSAGEBOX(VARTYPE(objexcel.cells(22,1).value)) DO WHILE .t. i=i+1 ?objexcel.cells(i,1).value IF !VARTYPE(objexcel.cells(i,1).value)="C" nrow=i-1 EXIT ENDIF ENDDO *nrow=20 LOCAL arecord(16) *MESSAGEBOX("循环添加记录") USE zlb disinf("zlb.dbf现有记录"+ALLTRIM(STR(RECCOUNT()))+"条") disinf("正在添加记录") FOR i=4 TO nrow arecord(1)=objexcel.cells(i,1).value&&学号  arecord(2)=objexcel.cells(i,2).value&&姓名 arecord(3)=objexcel.cells(i,3).value&&性别 arecord(4)=objexcel.cells(i,4).value&&籍贯 arecord(5)=objexcel.cells(i,5).value&&民族 *MESSAGEBOX(VARTYPE(objexcel.cells(i,6).value)) IF VARTYPE(objexcel.cells(i,6).value)="C" arecord(6)=RIGHT(objexcel.cells(i,6).value,2)+"/"+"01"+'/'; +LEFT(objexcel.cells(i,6).value,2) ELSE arecord(6)= RIGHT(STR(objexcel.cells(i,6).value,5,2),2); +"/"+"01"+"/"; +LEFT(STR(objexcel.cells(i,6).value,5,2),2) ENDIF &&arecord(6)=IIF(VARTYPE(objexcel.cells(i,6).value)="c",RIGHT(objexcel.cells(i,6).value,2)+"/"+"01"+'/'+LEFT(objexcel.cells(i,6).value,2),; RIGHT(STR(objexcel.cells(i,6).value,5,2),2)+"/"+"01"+'/'+LEFT(STR(objexcel.cells(i,6).value,5,2),2))&&出生年月 arecord(7)=LEFT(ALLTRIM(STR(objexcel.cells(i,8).value,6,0)),6)&&邮政编码 arecord(8)=objexcel.cells(i,7).value&&通讯地址 arecord(9)=objexcel.cells(i,9).value &&收信人 arecord(10)=iif(!ALLTRIM(objexcel.cells(i,10).value)=="",objexcel.cells(i,10).value; ,"无")&&家庭电话 arecord(11)=inf(3)&&专业 arecord(12)=inf(4)&&班级 arecord(13)=objexcel.cells(i,11).value&&寝室号码 arecord(14)=STR(objexcel.cells(i,12).value,7,0)&&寝室电话 arecord(15)=inf(1)&&校区 arecord(16)=inf(2)&&学历 SELECT zlb APPEND FROM ARRAY arecord ENDFOR disinf("zlb.dbf现有记录"+ALLTRIM(STR(RECCOUNT()))+"条") disinf("记录添加完毕,共添加了"+ALLTRIM(STR(nrow-3))+"条记录,请查检") INKEY(3) WAIT CLEAR ****定义日期转换函数,此函数能将各种格式的日期转换成mm/dd/yy的格式**** ****如果要转换的日期只有年和月,则自动添加日为'01'*** *!* FUNCTION datetran *!* PARAMETERS soudate *!* IF VARTYPE(soudate)="N" *!* DO case *!* CASE LEN(souDATE) ***关闭工作簿,退出EXCEL objexcel.quit RELEASE objexcel *!* objexcel.save *!* *objExcel.ActiveWorkbook.saved=.f. *!* objexcel.Quit &&退出 *!* RELEASE objexcel *!* retu

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧