将DBF数据文件导成excel文件的问题
来源:互联网 发布:sql sa登陆 18456 编辑:程序博客网 时间:2024/05/16 08:14
用 copy to EXCEL表名 type xl5
只能导出16383条记录,超过此数的用以下方法导出:
方法一:
如果你的数据中都是普通的数值和字符串类型,直接用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 = "ABCDEFGHIJKLMNOPQRSTUVWX
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类型字段。
- 将DBF数据文件导成excel文件的问题
- 关于“解决Excel打开DBF文件”问题的危害
- vb.net读取dbf、Excel、Access数据文件
- 迁移oracle的dbf数据文件
- oracle数据文件"*.dbf"的转移
- 一个将数据文件转换成excel文件打印的java实现方法的代码片断(Struts+poi)
- c# 对dbf文件的操作问题
- Oracle误删了数据文件(dbf文件)的修复办法
- 物理删除oracle数据文件(DBF文件)导致数据库ORA-01033的解决方法
- 将VFP的DBF文件导入SQL-Server2005中
- excel格式转换成dbf
- 将DBF转换成表
- 如何用Excel打开dbf文件
- 动态创建DBF数据文件
- 转移oracle数据文件"*.dbf"
- 将EXCEL电子表格文档,导入VFP DBF数据库的Java程序
- 将DBF文件导入到其它数据库
- 将DBF文件导入Sqlserver数据库
- 输出规范的数组
- 软件编程规范总则-程序效率(转)
- 良好的编程习惯
- string和double的相互转化
- 在UltraEdit中使用正则表达式(转…
- 将DBF数据文件导成excel文件的问题
- 向量空间模型(VSM)
- 倒排文件
- 堆和栈的区别(转)
- CString/string/char *比较详解
- size_t 到底多大
- 用vc++如何得到汉字的Unicode编码?
- Assert是你的朋友
- assert() 函数用法