Foxtable(狐表)用户栏目专家坐堂 → 从excel中导入数据自动匹配字段


  共有3276人关注过本帖树形打印复制链接

主题:从excel中导入数据自动匹配字段

帅哥哟,离线,有人找我吗?
蓝蚂蚁
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
从excel中导入数据自动匹配字段  发帖心情 Post By:2019/6/1 8:37:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看
举例:

 

表A结构:

登记日期  是否登记    审核   名称     规格型号     厂家   单位    数量

 

从Excel导入的表格其列名:

日期  号  出库仓库   组件名称     规格       生产企业    单位    数量

 

 

 

需要匹配的字段是:登记日期-日期    名称-组件名称   规格型号-规格     厂家-生产企业   单位-单位   数量-数量  这个Excel其他的列不需要导入(红色字段都不用理会的)。

问题:能不能用代码指定上面对应的匹配 不用手工一个一个点匹配。

补充:我做一个按钮,在按钮代码里面把导入的相关设置好,直接点击按钮就能实现导入数据,不用打开图片显示那个窗口了,很方便。谢谢 

[此贴子已经被作者于2019/6/1 9:01:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/6/1 9:21:00 [只看该作者]


[此贴子已经被作者于2019/6/1 9:22:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/6/1 9:29:00 [只看该作者]

参考:

Dim nms() As String = {"登记日期","名称"}
Dim nms2() As String = {"日期","组件名称"}

Dim dict As new Dictionary(of String,Integer)
For m As Integer = 0 To nms.Length - 1
    dict.add(nms2(m),nms(m))
Next

Dim Book As New XLS.Book("c:\test\订单.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("订单").StopRedraw()
'注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim r As Row = Tables("订单").AddNew()
    For m1 As Integer = 0 To Sheet.Cols.Count - 1
        If dict.ContainsKey(Sheet(0,m1).Value)
            r(dict(Sheet(0,m1).Value)) = Sheet(n,m1).Value
        End If
    Next
Next
Tables("订单").ResumeRedraw()

 回到顶部
帅哥哟,离线,有人找我吗?
蓝蚂蚁
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2019/6/2 21:29:00 [只看该作者]

从字符串“登记日期 ”到类型“Integer”的转换无效。

 回到顶部
帅哥哟,离线,有人找我吗?
蓝蚂蚁
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2019/6/2 21:31:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动匹配.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/3 8:49:00 [只看该作者]

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim nms() As String = {"登记日期","名称","规格型号","厂家","单位","数量","金额"}
    Dim nms2() As String = {"日期","组件名称","规格","生产企业","单位","数量","结算金额"}
    Dim dict As new Dictionary(of String,String)
    For m As Integer = 0 To nms.Length - 1
        dict.add(nms2(m),nms(m))
    Next
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("表A").StopRedraw()
    '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As Row = Tables("表A").AddNew()
        For m1 As Integer = 0 To Sheet.Cols.Count - 1
            If dict.ContainsKey(Sheet(0,m1).Value)
                r(dict(Sheet(0,m1).Value)) = Sheet(n,m1).Value
            End If
        Next
    Next
    Tables("表A").ResumeRedraw()
End If

 回到顶部
帅哥哟,离线,有人找我吗?
蓝蚂蚁
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2019/6/3 10:06:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:image 1.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/3 10:17:00 [只看该作者]

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls|Word文件|*.doc|Access文件|*.mdb" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim nms() As String = {"登记日期","名称","规格型号","厂家","单位","数量","金额"}
    Dim nms2() As String = {"日期","组件名称","规格","生产企业","单位","数量","结算金额"}
    Dim dict As new Dictionary(of String,String)
    For m As Integer = 0 To nms.Length - 1
        dict.add(nms2(m),nms(m))
    Next
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("表A").StopRedraw()
    '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 1 To Sheet.Rows.Count -1
        If  Sheet(n,0).text > "" Then
            Dim r As Row = Tables("表A").AddNew()
            For m1 As Integer = 0 To Sheet.Cols.Count - 1
                If dict.ContainsKey(Sheet(0,m1).Value)
                    r(dict(Sheet(0,m1).Value)) = Sheet(n,m1).Value
                End If
            Next
        End If
    Next
    Tables("表A").ResumeRedraw()
End If

 回到顶部