Foxtable(狐表)用户栏目专家坐堂 → 从EXCEL提取值 的问题


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

主题:从EXCEL提取值 的问题

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
从EXCEL提取值 的问题  发帖心情 Post By:2020/2/25 21:46:00 [只看该作者]

DataTables("表B").DataRows.Clear()
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("总表")
    Dim n1 As Integer = 0
    Dim n2 As Integer = 0
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim cr As Row = Nothing
        For Each r As Row In t.Rows
            If r("二次") = False
                Dim count As Integer = 0
                If r("上游客户") = sheet(n, 0).text Then count += 1
                If r("商品车") = sheet(n, 1).text Then count += 1
                If r("运输单号") = sheet(n, 2).text Then count += 1
                If r("上游动态") = sheet(n, 3).text Then count += 1
                If count = 4 Then
                    cr = r
                    Exit For
                End If
            End If
        Next
       
        If cr Is Nothing Then
            cr = Tables("表B").AddNew()
            n1 += 1
        Else
            n2 += 1
        End If
        For i As Integer = 0 To sheet.Cols.Count -1
            Dim cname As String = sheet(0, i).text
                If cr.Table.Cols.Contains(cname) Then
               cr(cname) = sheet(n, i).Text
           ElseIf cname = "上游对账金额" Then
                cr("上游对账金额") = sheet(n, i).Text
            End If
        Next
    Next
    messagebox.show(n1 & " " & n2, "提示")
End If

 

假设EXCLE有10条数据,其中有5条是重复的,而狐表中的【总表】中有20条数据(必然重复的更多一些)与这10条完全相符,如何能完不多不少的匹配出EXCEL中的10条数据呢

这段代码只能实现将重复数据中的第一条填写上了,其他的则为空


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/25 22:17:00 [只看该作者]

没看懂,请截图对应说明一下

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/2/26 20:05:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200226194405.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200226200255.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20200226195457.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/2/26 20:12:00 [只看该作者]

请老师指导一下代码怎么修改

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
[求助]麻烦老师指导  发帖心情 Post By:2020/2/27 9:14:00 [只看该作者]

[求助]麻烦老师指导

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


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

和之前的用法差不多的:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=146428&skin=0,查找数据使用find方法

For n As Integer = 1 To Sheet.Rows.Count -1
    Dim a As String = sheet(n,0).Text
    Dim b As String = sheet(n,1).Text
    Dim c As String = sheet(n,2).Text
    Dim d As String = sheet(n,3).Text
    Dim dr As DataRow = DataTables("表A").Find("上游客户 = '" & a & "' and 商品车='" & b & "' and 运输单号='" & c & "' and 上游动态='" & d & "'")
    If dr Isnot Nothing Then '如果存在同编号的订单
dr("上游对账金额") = sheet(n, 4).Text
end if
next

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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/2/27 17:55:00 [只看该作者]

执行的效果如上
老师,还是不行啊,表内有相同数据的行,只第一行能代入数据,后面的就都代不出来
还得您来指导下,
代码如下。
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim a As String = sheet(n,0).Text
        Dim b As String = sheet(n,1).Text
        Dim c As String = sheet(n,2).Text
        Dim d As String = sheet(n,3).Text
        Dim m As String = sheet(n,4).Text
        Dim f As String = sheet(n,5).Text
        Dim dr As DataRow = DataTables("总表").Find("上游客户 = '" & a & "' and 商品车 ='" & b & "' and 运输单号 ='" & c & "'and 上游动态 ='" & d & "' ")
        If dr IsNot Nothing Then '如果存在同编号的订单
            dr("上游对账金额") = sheet(n, 5).Text
        Else
            Dim nr As DataRow = DataTables("表B").AddNew
            nr("上游客户") = a
            nr("商品车") = b
            nr("运输单号") = c
            nr("上游动态") = d
            nr("数量") = m
            nr("上游对账金额") = f
        End If
    Next
End If
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200227175048.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:一尾狐 帖子:430 积分:4655 威望:0 精华:0 注册:2015/3/21 14:25:00
  发帖心情 Post By:2020/2/27 18:37:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:导入.xlsx

请指导
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/28 8:39:00 [只看该作者]

如果有多个相同的行Find改为使用Select用法:http://www.foxtable.com/webhelp/topics/0400.htm

 回到顶部