求助:vfp如何控制excel的sheet
如何把一个学生成绩表,分别按 班级 导出excel中不同的sheet中。比如:把一班的成绩导出到sheet1中,把二班的成绩导出到sheet2中。请高手们帮忙,在此,先谢谢高手们了!
2008-01-17 15:31

2008-01-17 16:56
2008-01-18 07:56
2008-01-19 15:32
2011-09-11 16:45
2011-12-16 20:22
程序代码:**************************************************************************
* 一格一格写数据,速度太慢,下面试探着用整表复制粘贴来处理,以加快速度
* 于2015年7月21日15:00调试成功。
**************************************************************************
*将DBF表分类导出到同一EXCEL工作簿的不同工作表上
***********************************************
SET SAFETY off
SET ENGI 70
LOCAL mypath
CLOSE DATABASES
create cursor Student (班级 C(10),学号 C(8),姓名 C(8),性别 C(2))
insert into Student Values ('经济04-1','B0401001','张三','男')
insert into Student Values ('经济04-1','B0401002','李四','男')
insert into Student Values ('经济04-2','B0401003','王五','男')
insert into Student Values ('经济04-2','B0401004','赵六','男')
insert into Student Values ('经济04-3','B0401005','孙启','男')
insert into Student Values ('经济04-3','B0401006','周把','男')
insert into Student Values ('经济05-1','B0501001','乌桕','男')
insert into Student Values ('经济05-1','B0501002','手动','男')
insert into Student Values ('经济05-1','B0501003','风格','男')
insert into Student Values ('经济06-1','B0601001','规划','男')
insert into Student Values ('经济06-1','B0601002','沟通','男')
SELECT 班级,count(*) as amount from student group by 班级 into cursor st1
SELECT st1
lnSheets=RECCOUNT() &&&&这个是记录班级数量
mypath=SYS(2003)+'\'
*----------------------------------------------------
oel=NewObject('Excel.Application') &&&&这是创建EXCEL对象
IF !VARTYPE(oel)$"O.o" &&& 如果用户的电脑上未装EXCEL软件,则结束运行。
messagebox("建立EXCEL文件失败,请检查OFFICE是否正常!")
RETURN
ENDIF
oel.workbooks.add &&&这是增加工作簿
oel.visible=.F. &&&显示EXCEL对象
DO while oel.workbooks(1).worksheets.count<lnSheets
oel.workbooks(1).worksheets.add
ENDDO
*--- 通过这个DO while……ENDDO循环增加工作表
*----------------------------------------------------
SELECT st1
GO top
SCAN
cxxdm=st1.班级
lnCnt=RECNO() &&& 用于控制EXCEL中的第几张表
SELECT * from student where 班级=cxxdm into cursor tmp
SELECT tmp
COPY TO ls type xl5
USE &&&& 此4句按校(班)生成一个过渡的临时表,用作复制源
oel.workbooks.open(mypath+"ls.xls") &&&& 打开复制源表
oel.ActiveSheet.cells.select &&&& 选定整张表
oel.selection.Copy &&& 复制选定内容
oel.workbooks(1).activate &&& 切换活动窗口
oel.workbooks(1).worksheets(lnCnt).name=cxxdm &&& 将表名命名为班级名(校代码)
oel.workbooks(1).worksheets(lnCnt).Activate &&& 设置为当前活动的表
oel.activeSheet.Paste &&& 进行粘贴
oel.workbooks('ls').activate &&& 切换到临时表为活动窗口,为了关闭
oel.Application.DisplayAlerts =.F. &&& 关闭EXCEL系统的对话框
oel.workbooks('ls').close &&& 关闭临时表,为了下一个班级(学校)数据生成时可以被覆盖。
SELECT st1
ENDSCAN
*---------------------------
oel.DisplayAlerts=.F. &&&&关闭EXCEL系统的对话框
oel.workbooks(1).SaveAs(mypath+"tmp.xls") &&&工作簿另为
*oel.workbooks(1).saved=.t. &&& 放弃存盘
oel.workbooks(1).close &&& 关闭工作簿
oel.QUIT &&& 退出Excel
RELEASE oel &&& 释放对象变量,以完全结束EXCEL的进程
MESSAGEBOX('已按班级生成在不同的工作表上了!',64,'生成提示:') 
2015-07-21 16:07
2015-08-01 08:40
2018-04-04 20:42
[此贴子已经被作者于2021-6-1 09:13编辑过]
2021-06-01 09:07