不用一个一个对dbf文件进行浏览,看是否产生多余的空记录。
回复 7楼 tlliqi
有没有方法判断不让这些空行进行转换呢?
程序代码:SET talk off
SET SAFETY off
M_File=GETFILE('xls','原始数据表')
IF M_File=" "
=MESSAGEBOX("请选择待导入的文件!",0+48,"提示")
RETURN
ELSE
IF JUSTEXT(M_FILE)#"XLS" &&获得文件扩展名
=MESSAGEBOX("您选择的不是EXCEL文档!",0+48,"提示")
RETURN
ENDIF
ENDIF
USE cj
myexcel=createobject('excel.application') &&创建一个对象
myexcel.visible=.t.
bookexcel=myexcel.workbooks.open(M_File) &&打开指定文件
o_SheetName=myexcel.application.ActiveSheet.Name &&获取当前激活工作表的名称
UsedRange =bookexcel.worksheets(o_SheetName).UsedRange &&返回工作表中可使用的区域,UsedRange表的属性
o_cols=UsedRange.columns.count &&汇总列
IF UsedRange.rows.count<=1
=MESSAGEBOX("待导入数据行数太少,请检查!",0+16,"提示")
ELSE
DIMENSION ls(UsedRange.rows.count ,o_cols)
ls=bookexcel.activesheet.usedrange.value
APPEND FROM ARRAY ls &&一次性将所有的记录全部追回到DBF文件中
* 如果需要对记录进行判断可以参考修改以下的程序。
* FOR i=2 TO ALEN(ls,1)
* IF NOT EMPTY(ls(i,1))
* APPEND BLANK
* REPLACE xm WITH ls(i,2),zymc WITH ls(i,3)
* IF TYPE("ls(i,4)")='N'
* REPLACE rxny WITH ALLTRIM(STR(ls(i,4)))
* ELSE
* REPLACE rxny WITH ls(i,4)
* ENDIF
* IF TYPE("ls(i,5)")='N'
* REPLACE byny WITH ALLTRIM(STR(ls(i,5)))
* ELSE
* REPLACE byny WITH ls(i,5)
* ENDIF
* IF TYPE("ls(i,11)")='N'
* REPLACE ksh WITH ALLTRIM(STR(ls(i,11),16,0))
* ELSE
* REPLACE ksh WITH ls(i,11)
* ENDIF
* endif
* ENDFOR
ENDIF
myexcel.workbooks.close &&关闭工作区
myexcel.quit &&关闭excel
brow
蓝色部分是我自己工作的内容,你可以参考修改成你自己需要的字段和相应的数组元素。