求助:vfp如何控制excel的sheet
如何把一个学生成绩表,分别按 班级 导出excel中不同的sheet中。比如:把一班的成绩导出到sheet1中,把二班的成绩导出到sheet2中。请高手们帮忙,在此,先谢谢高手们了!
************************************************************************** * 一格一格写数据,速度太慢,下面试探着用整表复制粘贴来处理,以加快速度 * 于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,'生成提示:')
[此贴子已经被作者于2021-6-1 09:13编辑过]