以下是引用wangzhiyi在2014-9-1 15:11:20的发言:
好久没上来,一口气读完所有的贴子,深受启发。自己试着写了一段程序,但愿能对楼主有所帮助。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文件,程序就能自动完成数据表的创建,所有信息采集表的数据一次性导入,如果信息采集表发生了变化,只需要修改字段名对照表中的相关内容即可。
太感谢了!之前筹备其他工作,一直没上论坛!
这就是版主所说的脱离了硬编码的程序!