CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  VFP

VFP6.0中不能将表中全部生成XLS文件?

楼主sunzhm()2005-02-17 21:45:03 在 其他数据库开发 / VFP 提问

在VFP6.0中使用copy   to   abcd   xls(或者xl5)命令不能将表中的记录(大约2.2万条)全部生成excel电子表格文件(大约只有1.6万条能到xls文件中),但使用sdf就可以。请问这个问题是我表建立的问题还是VFP的bug? 问题点数:50、回复次数:2Top

1 楼apple_8180(十豆三)回复于 2005-02-18 09:16:13 得分 50

这不是VFP的BUG,  
  COPY   to   Excel表时,最多只能COPY   16383   条记录(Excel中为16384行)。这是VFP这条语句的处理能力。  
   
  不过可以这样:  
  方法一:  
  如果你的数据中都是普通的数值和字符串类型,直接用Excel打开表,然后“另存为”一个Excel就可以了。  
  ---------------------------------------------------------------      
  方法二:用代码导  
  &&   DbfToExcel.PRG  
  &&   记得要安装Excel啊,否则不好用  
   
  CLOSE   DATABASES   ALL  
  SET   DATE   YMD  
  SET   CENTURY   ON  
  cDbfFile   =   GETFILE("dbf")  
  IF   EMPTY(cDbfFile)  
  RETURN  
  ENDIF  
  USE   (cDbfFile)   ALIAS   FoxTable   IN   0  
  IF   NOT   USED("FoxTable")  
  =MESSAGEBOX("打开表失败,程序将中止!",   16,   "Error")  
  RETURN  
  ENDIF  
  cExcelFile   =   PUTFILE("保存为(&N):",JUSTSTEM(cDbfFile)+".xls","xls")  
  IF   EMPTY(cExcelFile)  
  CLOSE   DATABASES   ALL  
  RETURN  
  ENDIF  
  SELECT   FoxTable  
  oExcelSheet   =   GETOBJECT("","Excel.Sheet")     &&   产生Excel对象  
  IF   NOT   TYPE("oExcelSheet")   =   "O"  
  =MESSAGEBOX("Excel对象创建失败,程序将中止!",   16,   "Error")  
  RETURN  
  ENDIF  
  oExcelApp   =   oExcelSheet.Application  
  oExcelApp.Workbooks.Add()  
  oExcelApp.ActiveWindow.WindowState=2  
  oSheet   =   oExcelApp.ActiveSheet  
  nFldCount   =   AFIELDS(aFldList,   "FoxTable")  
  FOR   i   =   1   TO   nFldCount  
  oSheet.Cells(1,i).Value   =   aFldList[i,   1]  
  ENDFOR  
  cRecc   =   STR(RECCOUNT("FoxTable"))  
  SCAN  
  WAIT   WINDOW   ALLTRIM(STR(RECNO()))   +   "/"   +   cRecc     NOWAIT  
  FOR   i   =   1   TO   nFldCount  
  vValue   =   .NULL.  
  IF   AT(aFldList[i,   2],   "CDLMNFIBYT")   =   0  
  LOOP  
  ENDIF  
  cFldName   =   aFldList[i,   1]  
  vValue   =   EVALUATE(cFldName)  
  DO   CASE  
  CASE   aFldList[i,   2]   =   "C"     &&   字符/字符串  
  vValue   =   TRIM(vValue)  
  CASE   aFldList[i,   2]   =   "D"     &&   日期  
  vValue   =   DTOC(vValue)  
  CASE   aFldList[i,   2]   =   "T"     &&   日期时间  
  vValue   =   TTOC(vValue)  
  CASE   INLIST(aFldList[i,   2],   "N",   "F",   "I",   "B",   "Y")       &&   数值  
  CASE   aFldList[i,   2]   =   "L"     &&   逻辑  
  CASE   aFldList[i,   2]   =   "M"     &&   备注型  
  OTHERWISE  
  vValue   =   .NULL.  
  ENDCASE  
  IF   VARTYPE(vValue)   =   "C"   AND   EMPTY(vValue)  
  LOOP  
  ENDIF  
  IF   NOT   ISNULL(vValue)  
  oSheet.Cells(RECNO("FoxTable")+1,   i).Value   =   vValue  
  ENDIF  
  ENDFOR  
  ENDSCAN  
  cChrStr   =   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"  
  FOR   i   =   1   TO   nFldCount  
  cColumn   =   SUBSTR(cChrStr,   INT((i-1)/26),   1)   +   SUBSTR(cChrStr,   IIF(MOD(i,   26)=   0,   26,   MOD(i,   26))   ,   1)  
  oSheet.Columns(cColumn   +   ":"   +   cColumn).ColumnWidth   =   12  
  IF   aFldList[i,   2]   =   "M"  
  oSheet.Columns(cColumn   +   ":"   +   cColumn).WrapText   =   .F.  
  ENDIF  
  ENDFOR  
  oExcelApp.ActiveWorkbook.SaveAs(cExcelFile)  
  oExcelApp.ActiveWorkbook.Close(.F.)  
  oExcelApp.ActiveWorkbook.Close(.F.)  
  oExcelApp.Quit  
  oExcelSheet   =   .NULL.  
  oExcelApp   =   .NULL.  
  WAIT   CLEAR  
  =MESSAGEBOX("转换完毕!",   64,   "OK")  
  CLOSE   DATABASES   ALL            
     
  程序是用VFP8写的,在VFP6中也可以,没有问题。只要能够执行完成,就会是正确的,行数只受你安装的Excel最大行数限制,至少大于65535行      
     
  这个程序支持所有字段类型,包括MEMO类型字段。Top

2 楼sunzhm()回复于 2005-02-19 13:38:24 得分 0

谢谢!Top

相关问题

  • vfp中如何自动生成报表?
  • 如何将数据库生成的表转换成xls??急急
  • 谁有VFP的动态报表生成器?
  • VFP中将表的内容生成 TXT文件?如何实现啊
  • 怎样在asp.net中生成vfp的数据表并传到客户端!
  • 求教,能够利用VFP生成word报表吗?如果可以请指教!!
  • 用vfp生成.exe文件
  • 生成子表的问题
  • 报表打印及生成
  • 生成报表出错?

关键词

  • vfp
  • 文件
  • excel
  • cdbffile
  • foxtable
  • xls
  • 表
  • 程序
  • 类型
  • copy

得分解答快速导航

  • 帖主:sunzhm
  • apple_8180

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo