不用一个一个对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蓝色部分是我自己工作的内容,你可以参考修改成你自己需要的字段和相应的数组元素。