| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2303 人关注过本帖, 1 人收藏
标题:求助:vfp如何控制excel的sheet
只看楼主 加入收藏
silasiqq
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-2-28
  问题点数:0  回复次数:8   
求助:vfp如何控制excel的sheet
如何把一个学生成绩表,分别按 班级 导出excel中不同的sheet中。比如:把一班的成绩导出到sheet1中,把二班的成绩导出到sheet2中。请高手们帮忙,在此,先谢谢高手们了!
搜索更多相关主题的帖子: sheet vfp excel 
2008-01-17 15:31
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
  得分:0 
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 * from student order by 1 into cursor st
select count(*) as amount from student group by 班级 into cursor st1
select st1
lnSheets=reccount('st1')
o=NewObject('Excel.Application')
o.workbooks.add
o.visible=.t.
do while o.workbooks(1).worksheets.count<lnSheets
  o.workbooks(1).worksheets.add
enddo
select st
lcClass=space(100)
lnCnt=0
lnRow=1
scan
  if lcClass#班级
    lnCnt=lnCnt+1
    lnRow=1
    lcClass=班级
    o.workbooks(1).worksheets(lnCnt).name=lcClass
  endif
  o.workbooks(1).worksheets(lnCnt).cells(lnRow,1).value=班级
  o.workbooks(1).worksheets(lnCnt).cells(lnRow,2).value=学号
  o.workbooks(1).worksheets(lnCnt).cells(lnRow,3).value=姓名
  o.workbooks(1).worksheets(lnCnt).cells(lnRow,4).value=性别
  lnRow=lnRow+1
endscan

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-01-17 16:56
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
  得分:0 
还是大老虎给的详细!

2008-01-18 07:56
silasiqq
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-2-28
  得分:0 
谢谢大家的帮助,再次感谢!

活到老,学到老!
2008-01-19 15:32
dapinetree
Rank: 2
等 级:论坛游民
帖 子:29
专家分:34
注 册:2011-9-11
  得分:0 
支持!
2011-09-11 16:45
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:25
帖 子:643
专家分:1219
注 册:2009-3-1
  得分:0 
学到一招,谢谢
2011-12-16 20:22
wengjl
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:82
帖 子:1725
专家分:3099
注 册:2007-4-27
  得分:0 
程序代码:
**************************************************************************
* 一格一格写数据,速度太慢,下面试探着用整表复制粘贴来处理,以加快速度
* 于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,'生成提示:') 






[ 本帖最后由 wengjl 于 2015-7-21 16:09 编辑 ]

只求每天有一丁点儿的进步就可以了
2015-07-21 16:07
沙枣
Rank: 4
来 自:宁夏银川
等 级:业余侠客
威 望:5
帖 子:103
专家分:221
注 册:2015-5-31
  得分:0 
回复 楼主 silasiqq
我有专门的打印程序,可以任意的字段组合进行分类打印,每个分类的数据放在一个sheet上。
2015-08-01 08:40
杂七杂八
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2018-2-20
  得分:0 
回复 2楼 Tiger5392
请赐教:1.能否做到sheet的名称宽窄根据班级名称长短相一致。
       select st
 lcClass=space(100)    这里的含义能解释一下吗?
 lnCnt=0
 lnRow=1
 scan
   if lcClass#班级
    lnCnt=lnCnt+1
     lnRow=1
     lcClass=班级
    o.workbooks(1).worksheets(lnCnt).name=lcClass
   endif
2018-04-04 20:42
快速回复:求助:vfp如何控制excel的sheet
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066817 second(s), 7 queries.
Copyright©2004-2020, BCCN.NET, All Rights Reserved