当前位置: 代码迷 >> VFP >> 新年快乐,顺便问个有关问题
  详细解决方案

新年快乐,顺便问个有关问题

热度:1781   发布时间:2013-02-26 00:00:00.0
新年快乐,顺便问个问题!
各位新年快乐,在这里顺便问个问题,我在使用vfp 6.0导出数据的时候,当我导成excel格式的时候,老是出现数据丢失,不管是使用语句copy to 还是使用导出按钮都是一样的效果,只有16384行(或许不是这个数,具体行数不记得了)。但当我导成txt格式的时候,却没有数据的丢失,请问各位大哥,这是怎么一回事?有解决办法吗?还是这是vfp 6.0的一个bug呢?? 谢谢

------解决方案--------------------------------------------------------
是不是65536行啊?EXCEL的最大行数。
------解决方案--------------------------------------------------------
是的,这个是 Excel 本身的限制,它只允许最大 65536 行数据,Excel8 以前的版本不允许导入超过 32767 行的数据且只显示前 16384 行


------解决方案--------------------------------------------------------
探讨
对 就是16384行 那请问在vfp 6.0下有解决的办法吗

------解决方案--------------------------------------------------------
VB code
为什么用VFP导成EXCEL每次只能导16384行?*-----------------------------------------Excel 2003 最大行列256 列    65536 行Excel 2007 最大行列16384 列  1048576 行------------------------------------------VFP的数据库,记录数为4万多,用文件-导出-选择文件类型为EXCEL,为什么导出的只有16384行;    用换一个数据库,记录数为2万多,用文件-导出-选择文件类型为EXCEL,导出的还是只有16384行(第一行保留给字段标题,实际导出记录为16383)---------------------------------------------------------------方法一:用VFP9.0执行如下语句:Copy To TEST.Xls Type Xl5注:可以输出最多 65,536 行(但其中有一行保留给字段标题),因为目前EXCEL最多支持 65,536 行Excel 8.0 (Excel 97)之前的版本只能显示前 16,384 行,并且不能导入超过 32,767 行的文件。---------------------------------------------------------------方法二:导成 Csv 文件,记录没有限制,用EXCEL一样打开,但EXCEL2003最多能查看65,536行,因为目前EXCEL2003最多支持 65,536行(Excel 2007 最大行列:16384 列  1048576 行)Copy To test.Csv Type Csv但导成CSV有如下限制:- 逻辑字段转换为 F/T 而不是 FALSE/TRUE.- 如果一个字符字段只包括数值且值中包括前导的零, Excel 转换它为数值型的值 (如 "00000100" => 100).- 日期型字段导出时要将设为 mm/dd/yy 格式或 mm/dd/yyyy 格式,否则导回时将丢失日期字段内容.特别是字段是一个专用关键字且你又要在稍后从Excel 文件转换回 VFP 时,这样会有问题。---------------------------------------------------------------方法三:如果你的数据中都是普通的数值和字符串类型,直接用Excel打开表,然后“另存为”一个Excel就可以了。这样最多可以保存65,536 行(但其中有一行保留给字段标题),因为目前EXCEL最多支持 65,536 行---------------------------------------------------------------方法四:用代码导* Excel 5 和 Excel 95 有一个限制就是一张工作表只能有 16,383 行.* 该限制在 Excel 97 和 Excel 2000 是 65,536 行.* 由于没有 TYPE XL8 命令, VFP 只能复制最初的 16,383 条记录.* 该程序处理该限制并允许复制用户机器上的 Excel 版本所支持的记录数.&& DbfToExcel.PRG&& 记得要安装Excel啊,否则不好用&& BY Foxer(狐狸)Close Databases AllSet Date YMDSet Century OncDbfFile = Getfile("dbf")If Empty(cDbfFile)    ReturnEndifUse (cDbfFile) Alias FoxTable In 0If Not Used("FoxTable")    =Messagebox("打开表失败,程序将中止!", 16, "Error")    ReturnEndifcExcelFile = Putfile("保存为(&N):",Juststem(cDbfFile)+".xls","xls")If Empty(cExcelFile)    Close Databases All    ReturnEndifSelect FoxTableoExcelSheet = Getobject("","Excel.Sheet")  && 产生Excel对象If Not Type("oExcelSheet") = "O"    =Messagebox("Excel对象创建失败,程序将中止!", 16, "Error")    ReturnEndifoExcelApp = oExcelSheet.ApplicationoExcelApp.Workbooks.Add()oExcelApp.ActiveWindow.WindowState=2oSheet = oExcelApp.ActiveSheetnFldCount = Afields(aFldList, "FoxTable")For i = 1 To nFldCount    oSheet.Cells(1,i).Value = aFldList[i, 1]EndforcRecc = 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 =
------解决方案--------------------------------------------------------
老问题了,用VFP用OLE方式打开EXCEL(2007版本),直接复制,如果不是2007,只有有N个SHEET了
  相关解决方案