以下是引用sdta在2014-8-4 00:42:04的发言:
你的意思我明白,对于楼主这样水平的选手,只有用前面代码的方法,否则,他就看不懂了。
你的意思我明白,对于楼主这样水平的选手,只有用前面代码的方法,否则,他就看不懂了。
是的,这样的代码,比较容易弄懂!很直观,也感谢大家的热心指导!
SET date TO ansi SET CENTURY on SET SAFETY OFF myexcel=createobject('excel.application') && 创建一个对象 myexcel.visible=.f. bookexcel=myexcel.workbooks.open("f:\字段名对照表.xls") && 打开指定文件 USE f:\stru1 ZAP arr=bookExcel.ActiveSheet.UsedRange.Value FOR i=2 TO ALEN(arr,1) DO CASE CASE arr(i,4)='字符' x1='C' CASE arr(i,4)='日期' x1='D' CASE arr(i,4)='逻辑' x1='L' CASE arr(i,4)='数字' x1='N' ENDCASE APPEND BLANK REPLACE field_name WITH arr(i,3),field_type WITH x1,field_len WITH arr(i,5) IF field_type='N' REPLACE field_dec WITH 2 endif * REPLACE 字段内容 WITH arr(i,3),类型 WITH x1,位置 WITH arr(i,6) ENDFOR CREATE grxx from f:\stru1 USE grxx *myexcel=createobject('excel.application') && 创建一个对象 FOR in1=1 TO ADIR(axls,"个人信息*.xls") bookexcel=myexcel.workbooks.open(SYS(5)+SYS(2003)+"\"+axls[in1,1]) && 打开指定文件 APPEND BLANK FOR i=2 TO ALEN(arr,1) col1=VAL(LEFT(arr(i,6),AT(',',arr(i,6))-1)) row1=VAL(subs(arr(i,6),AT(',',arr(i,6))+1)) DO case CASE arr(i,4)='字符' OR arr(i,4)='备注' xx1=ALLTRIM(myexcel.cells(col1,row1).text) CASE arr(i,4)='日期' * xx1=CTOD(myexcel.cells(col1,row1).text) xx1=CTOD(TRANSFORM(myexcel.cells(col1,row1).text,"@R 9999-99-99")) CASE arr(i,1)='数字' xx1=VAL(myexcel.cells(col1,row1).text) ENDCASE REPLACE &arr(i,3) WITH xx1 ENDFOR myexcel.workbooks.close &&关闭当前EXCEL文档 myexcel.quit &&退出EXCEL ENDFOR BROWSE运行程序只需要给出一个字段名对照表.XLS文件,程序就能自动完成数据表的创建,所有信息采集表的数据一次性导入,如果信息采集表发生了变化,只需要修改字段名对照表中的相关内容即可。