再次请教各位高手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