dbf 到 excel转换

&& Dbf2Excel.PRG && 记得要安装Excel啊,否则不好用 CLOSE DATABASES ALL SET DATE ANSI 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 程序是用VFP 8写的,记得好像在VFP 6中也试过,没有问题。只要能够执行完成,就会是正确的,行数只受你安装的Excel最大行数限制,至少大于65535行 我做这个程序就是因为转换数据时,有MEMO类型的字段,到了Excel里面就只有250个字节长了。 -------------------------------------------------------------- xlQuery=exlapp.ActiveSheet.QueryTables.Add("OLEDB;Provider=VFPOLEDB;Data Source="+ipath+";Mode=Share Deny None;Password='';Collating Sequence=MACHINE", exlapp.Range("A2"), "select * from table") 此种方法不支持包含MEMO超长的数据 --------------------------------------------------------------- 如果你的数据中都是普通的数值和字符串类型,直接用Excel打开表,然后“另存为”一个Excel就可以了,简单明了,不出错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值