以下是引用sdta在2014-8-4 00:42:04的发言:
你的意思我明白,对于楼主这样水平的选手,只有用前面代码的方法,否则,他就看不懂了。
你的意思我明白,对于楼主这样水平的选手,只有用前面代码的方法,否则,他就看不懂了。
是的,这样的代码,比较容易弄懂!很直观,也感谢大家的热心指导!
2014-08-04 16:02
2014-08-04 16:05
2014-08-04 16:18
2014-08-14 10:19
2014-08-14 10:22
2014-08-14 13:37
2014-08-14 14:26
2014-08-15 15:13
2014-08-29 00:02
程序代码: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文件,程序就能自动完成数据表的创建,所有信息采集表的数据一次性导入,如果信息采集表发生了变化,只需要修改字段名对照表中的相关内容即可。
2014-09-01 15:11