再次请教各位高手EXCEL导入问题
我有一个EXCEL表,里边有名称,编号,数量,单价等表头的列,我的DBF表里也有相应的字段.在EXCEL里这些列的排序有时候不一样例如,名称有的时候在A列,有时候在D列,而有时候又在别的列。能不能实现,再导入的时候根据表头来对应导入数据,如果可以,怎么实现。虚心学习中,请各位高手赐教。
程序代码:strpath=GETFILE("EXCEL98_2003文件:xls","导入EXCEL数据")&&&要导入的EXCEL表
LOCAL oexcel
oexcel=CREATEOBJECT("Excel.Application")
oexcel.workbooks.OPEN(strpath)
arrtableinfo=oexcel.activesheet.usedrange.VALUE&&&将EXCEL里的数据保存到数组arrtableinfo里
oexcel.QUIT
tablerow=ALEN(arrtableinfo,2)
RELEASE oexcel
USE 你的表&&&要导入EXCEL数据的dbf表
i=1
DO WHILE .T.
afieldname=FIELD(i)&&&读取dbf表的字段
IF EMPTY(afieldname)&&如果读取不到dbf字段就退出
EXIT
ENDIF
DIMENSION arrfield(i)
****检测dbf字段名跟EXCEL的哪个字段一致,就将这个字段序号保存到数组arrfield里
arrfield(i)=ASCAN(arrtableinfo,afieldname,1,tablerow)
i=i+1
ENDDO
FOR i2=2 TO ALEN(arrtableinfo,1)-1&&&检测每一行EXCEL里的数据
APPEND BLANK
FOR i3=1 TO i-1
IF NOT EMPTY(arrfield(i3))&&如果EXCEK字段跟dbf字段匹配
fieldname=FIELD(arrfield(i3))
REPLACE &fieldname WITH arrtableinfo(i2,i3)&&将dbf相匹配的字段值修改为EXCEL里的数据。
ENDIF
ENDFOR
ENDFOR
BROWSE
程序代码:public mypath
mypath=""
mypath=getfile("xls")
_ole_excel = CreateObject("Excel.Application")
_ole_excel.WorkBooks.Open(mypath) && 要打开的工作表名(xls)必须是全路径
_ole_excel.WorkSheets(1).Activate &&激活指定的工作簿
bookExcel = _ole_excel.APPLICATION.Workbooks.OPEN(mypath)
nrows=bookExcel.Worksheets(1)
UsedRange =nrows.UsedRange
r = UsedRange.ROWS.COUNT
USE 你的表 EXCLUSIVE
ZAP
myexcel=createobject('excel.application') &&创建一个对象
myexcel.visible=.f.&&不可见
bookexcel=myexcel.workbooks.open(mypath) &&打开指定文件
o_SheetName=myexcel.application.ActiveSheet.Name &&获取当前激活工作表的名称
UsedRange =bookexcel.worksheets(o_SheetName).UsedRange &&返回工作表中可使用的区域,UsedRange表的属性
o_rows=UsedRange.rows.count &&汇总行
o_cols=UsedRange.columns.count &&汇总列
IF o_rows<=1
=MESSAGEBOX("待导入数据行数太少,请检查!",0+16,"提示")
ELSE
FOR i=2 TO o_rows
m1=myexcel.cells(i,1).text &&名称
m2=myexcel.cells(i,2).text &&编号
m3=myexcel.cells(i,3).text &&数量
m4=myexcel.cells(i,4).text &&单价
APPEND BLANK
REPLACE 名称 WITH m1
REPLACE 编号 WITH m2
REPLACE 数量 WITH m3
REPLACE 单价 WITH m4
ENDFOR
ENDIF
myexcel.workbooks.close &&关闭工作区
myexcel.quit &&关闭excel
browse
