| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2322 人关注过本帖, 1 人收藏
标题:再次请教各位高手EXCEL导入问题
只看楼主 加入收藏
cmy06
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-28
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:34 
再次请教各位高手EXCEL导入问题
我有一个EXCEL表,里边有名称,编号,数量,单价等表头的列,我的DBF表里也有相应的字段.在EXCEL里这些列的排序有时候不一样例如,名称有的时候在A列,有时候在D列,而有时候又在别的列。能不能实现,再导入的时候根据表头来对应导入数据,如果可以,怎么实现。虚心学习中,请各位高手赐教。
搜索更多相关主题的帖子: 学习 EXCEL 
2012-11-30 12:40
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
用代码方法,将DBF中的数据导入EXCEL中。
2012-11-30 15:02
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
假如EXcel第一行是字段名,且字段名次序有所不对应,可以利用下面代码,将EXcel表中的数据导入到对应的DBF表中。
程序代码:
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


[ 本帖最后由 月沐庭轩 于 2012-11-30 21:28 编辑 ]

坚持学习vfp,QQ:306805680
2012-11-30 15:22
Kerberos
Rank: 5Rank: 5
来 自:江苏扬州
等 级:职业侠客
帖 子:227
专家分:355
注 册:2012-9-11
收藏
得分:0 
程序代码:
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




想学好VFP,想做VFP高手,想帮助更多的人解决VFP问题!
2012-11-30 15:46
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
回复 4楼 Kerberos
楼上的符合EXCEL表的字段跟dbf字段完全一致时可用。

坚持学习vfp,QQ:306805680
2012-11-30 19:28
cmy06
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-28
收藏
得分:0 
同意5楼的,这个代码在字段顺序一致的情况下可以用
2012-11-30 20:41
cmy06
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-28
收藏
得分:0 
回复 2楼 bccn201203
我看可行,通过看这段代码,使我收益良多,万分感谢!
2012-11-30 20:44
cmy06
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-28
收藏
得分:0 
回复 3楼 月沐庭轩
晕死,回复错楼了,3楼勿怪啊!
2012-11-30 20:45
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
其实可以先用VFP系统的功能将EXCEL文件导入到一个自由表,然后再将这个自由表添加到你的表中,VFP系统在添加时是按照字段名对应的,字段前后顺序并不会影响添加。只要同名字段的类型一致就不会出错,各位可以测试一下就明白了。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-11-30 21:01
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
回复 9楼 hu9jj
这个自由表怎么定义它的字段?或者如何将EXCEL表直接转化为一个提前未定义字段的DBF自由表?用哪个语句?是不是还是APPEND FROM FileName xl5或xl8?

[ 本帖最后由 月沐庭轩 于 2012-11-30 21:25 编辑 ]

坚持学习vfp,QQ:306805680
2012-11-30 21:21
快速回复:再次请教各位高手EXCEL导入问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019116 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved