Foxtable(狐表)用户栏目专家坐堂 → [求助]合并excel数据


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

主题:[求助]合并excel数据

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
[求助]合并excel数据  发帖心情 Post By:2022/3/1 18:05:00 [只看该作者]

求教,如何实现在合并过程中查找是否存在"证件号码"和"管号"相同的行,存在跳过,不存在则增加?下面代码如何修改?

Dim dlg As new OpenFileDialog
dlg.Filter = "excel文件|*.xls;*.xlsx"
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each f As String In dlg.FileNames
        Dim  Book As New XLS.Book(f)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Tables("jcjgsbsj").StopRedraw()
        Dim nms() As String = {"姓名","证件号码","核酸检测结果","核酸检测时间","核酸检测机构","管号","行政区名称"}
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim bh As String = sheet(n,1).Text
            MessageBox.Show("'"& bh &"'")
            If bh = "" Then
                DataTables("jcjgsbsj").LoadTop = "100"
                DataTables("jcjgsbsj").Load
                Tables("jcjgsbsj").ResumeRedraw()
                Exit For
            Else
                Dim dr As DataRow = DataTables("jcjgsbsj").Find(" 证件号码 = '" & bh & "'")
                If dr Is Nothing Then '如果不存在同批号的订单
                    dr =  DataTables("jcjgsbsj").AddNew()
                End If
                For m As Integer = 0 To nms.Length - 1
                    If nms(m) > "" Then
                        dr(nms(m)) = Sheet(n,m).Value
                    End If
                Next
            End If
        Next
        Tables("jcjgsbsj").ResumeRedraw()
    Next
End If
[此贴子已经被作者于2022/3/1 18:09:06编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

……
If dlg.ShowDialog = DialogResult.OK Then
Tables("jcjgsbsj").StopRedraw()
    For Each f As String In dlg.FileNames
        Dim  Book As New XLS.Book(f)
        Dim Sheet As XLS.Sheet = Book.Sheets(0)
        Dim nms() As String = {"姓名","证件号码","核酸检测结果","核酸检测时间","核酸检测机构","管号","行政区名称"}
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim bh As String = sheet(n,1).Text
            Dim gh As String = sheet(n,5).Text
            MessageBox.Show("'"& bh &"'")
If bh > "" andalso gh > "" Then
                Dim dr As DataRow = DataTables("jcjgsbsj").Find(" 证件号码 = '" & bh & "' and 管号= '" & gh & "'")
                If dr Is Nothing Then '如果不存在同批号的订单
                    dr =  DataTables("jcjgsbsj").AddNew()
                For m As Integer = 0 To nms.Length - 1
                        dr(nms(m)) = Sheet(n,m).Value
                Next
                End If
next
        Next

    Next
Tables("jcjgsbsj").ResumeRedraw()
End If

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


加好友 发短信
等级:婴狐 帖子:18 积分:269 威望:0 精华:0 注册:2021/11/25 20:37:00
  发帖心情 Post By:2022/3/2 11:22:00 [只看该作者]

这个代码会不会因为不同日期存在相同证件号和管号的情况而录不进去?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/2 11:32:00 [只看该作者]

如果有这种情况,需要怎么处理?

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


加好友 发短信
等级:婴狐 帖子:18 积分:269 威望:0 精华:0 注册:2021/11/25 20:37:00
  发帖心情 Post By:2022/3/3 9:54:00 [只看该作者]

添加日期的验证

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

和管号的用法一样,也加到查询条件里

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


加好友 发短信
等级:一尾狐 帖子:463 积分:4163 威望:0 精华:0 注册:2011/4/5 16:54:00
回复:(有点蓝)……If dlg.ShowDialog = DialogResu...  发帖心情 Post By:2022/3/8 9:29:00 [只看该作者]

谢谢蓝老师,功能可以实现。但存在效率问题,提示证件号码存在,需反复点击确定才能继续,如何完善?

补充说明:管号表内允许重复,证件号码也允许重复,但管号只能使用1次,因此不存不同日期存在相同证件号和管号的情况

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/8 10:38:00 [只看该作者]

把自己代码里的MessageBox去掉咯

 回到顶部