Foxtable(狐表)用户栏目专家坐堂 → [求助]导入EXCEL表格更新原有数据的方法


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

主题:[求助]导入EXCEL表格更新原有数据的方法

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/17 15:07:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/17 23:04:00 [显示全部帖子]

修改代码

 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim c As Integer = 0
    Dim x As Integer = 0
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("班级信息表").StopRedraw()
    '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim nms() As String = {"班级编号","班级名称","学院","学制","培养层次","年级","素质导师","备注"}
    '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,0).Text
        dim fdr as datarow = DataTables("班级信息表").Find("班级编号 = '" & bh & "'")
        If fdr Is Nothing Then '如果不存在同编号的订单
            c = c + 1
            fdr = dataTables("班级信息表").AddNew()
        else
            x = x + 1
        End If
        For m As Integer = 0 To nms.Length - 1
            fdr(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("班级信息表").ResumeRedraw()
    DataTables("班级信息表").Save
    MessageBox.Show("导入完成,共导入" & c & "条记录,修改" & x & "条记录")
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/18 8:46:00 [显示全部帖子]

以下是引用jjjeyes在2017/9/18 0:43:00的发言:
不过后面的“修改x条信息”,不管导入多少条,只要是导入的不管和原先有没有不同,都记为修改了的。把原来相同的数据也记做了修改的条目

 

变量n记录的是导入的新增的条数;变量x记录的是修改原来表的数据的条数。这两个数据不正确吗?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/18 10:41:00 [显示全部帖子]

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim c As Integer = 0
    Dim x As Integer = 0
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Tables("班级信息表").StopRedraw()
    '注意以下数组中列名称的顺序,必须和Excel表中的列顺序一致
    Dim nms() As String = {"班级编号","班级名称","学院","学制","培养层次","年级","素质导师","备注"}
    '注意下面的循环变量从1开始,而不是从0开始,因为Excel表的第一行是标题
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim bh As String = sheet(n,0).Text
        Dim fdr As DataRow = DataTables("班级信息表").Find("班级编号 = '" & bh & "'")
        If fdr Is Nothing Then '如果不存在同编号的订单
            c = c + 1
            fdr = DataTables("班级信息表").AddNew()
        Else
            For m As Integer = 0 To nms.Length - 1
                If fdr(nms(m)) <> Sheet(n,m).Value
                    x = x + 1
                    Exit For
                End If
            Next
        End If
       
        For m As Integer = 0 To nms.Length - 1
            fdr(nms(m)) = Sheet(n,m).Value
        Next
    Next
    Tables("班级信息表").ResumeRedraw()
    DataTables("班级信息表").Save
    MessageBox.Show("导入完成,共导入" & c & "条记录,修改" & x & "条记录")
End If

[此贴子已经被作者于2017/9/18 10:42:06编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/19 9:04:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/19 11:24:00 [显示全部帖子]

参考11楼的方式。

 回到顶部