本人日前正在为公司写一个接口,需要将DBF格式数据转换成为CSV格式。CSV格式即是以逗号分隔的一种文本文件。VFP中只有通过COPY TO 命令将数据转换成为TXT、Excel、DBase等格式,但是不能直接将数据转换成为CSV格式。于是想先将数据转换成为Excel格式再将其转换成CSV格式,因为Excel可以将其中的数据转换成为CSV格式。
首先在转换DBF到Excel时发现COPY TO 命令有最大行数的限制,超过16000行就会自动丢弃,而且不报警。于是使用OLE在VFP中填写Excel文件。实现如下:
* InFile 需要转换的DBF表名称
* OutFile 导出的文件名称
function ConverttoExcel(InFile,OutFile)
local XLApp,XLSheet
XLApp = GetObject('','Excel.Application')
XLApp.WorkBooks.add
XLSheet = XLApp.ActiveSheet
use &InFile alias table1
* 读取字段数
fz = fcount()
* 写第一行字段名称
for y = 1 to fz
XLSheet.Cells(1,y).value = fields(y)
next