Foxtable(狐表)用户栏目专家坐堂 → [求助]EXCEL导入去重


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

主题:[求助]EXCEL导入去重

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


加好友 发短信
等级:幼狐 帖子:102 积分:912 威望:0 精华:0 注册:2012/5/20 6:57:00
[求助]EXCEL导入去重  发帖心情 Post By:2012/8/17 19:31:00 [只看该作者]

用如下编码导入excel表数据不能去除重复的行

 

Dim Book As New XLS.Book("D:\Documents\管理项目2\资料.xls")
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 r As Row = Tables("资料").AddNew()
    For m As Integer = 0 To nms.Length - 1
         r(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables("资料").ResumeRedraw()

[此贴子已经被作者于2012-8-17 19:31:47编辑过]

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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/8/17 20:32:00 [只看该作者]

大概如此,希望你能理解:

 

 

Dim Book As New XLS.Book("D:\Documents\管理项目2\资料.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("期初").StopRedraw()
Dim nms() As String = {"类别","品名","规格","型号","材质","单位"}
For n As Integer = 1 To Sheet.Rows.Count - 1
    Dim Filter As String
    For m As Integer = 0 To nms.Length - 1
        If m > 0 Then
            Filter = Filter & " And "
        End If
        Filter = Filter & nms(m) & " = '" & sheet(n,m).Value & "'"
    Next
    If DataTables("资料").Find(Filter) Is Nothing Then
        Dim r As Row = Tables("资料").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("资料").ResumeRedraw()


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


加好友 发短信
等级:幼狐 帖子:102 积分:912 威望:0 精华:0 注册:2012/5/20 6:57:00
  发帖心情 Post By:2012/8/17 21:10:00 [只看该作者]

可能是类别有空行,所以出错
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目.zip


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/17 22:20:00 [只看该作者]

Dim Book As New XLS.Book(ProjectPath & "资料.xls")
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("资料").StopRedraw()
Dim Filter As String
Dim nms() As String = {"类别","品名","规格","单位"}
For n As Integer = 1 To Sheet.Rows.Count - 1
    Filter = ""
    For m As Integer = 0 To nms.Length - 1
        If m > 0 Then
            Filter = Filter & " And "
        End If
        Filter = Filter & nms(m) & " = '" & sheet(n,m).Value & "'"
    Next
    If DataTables("资料").Find(Filter) Is Nothing Then
        Dim r As Row = Tables("资料").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
        Next
    End If
Next
Tables("资料").ResumeRedraw()

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


加好友 发短信
等级:幼狐 帖子:102 积分:912 威望:0 精华:0 注册:2012/5/20 6:57:00
  发帖心情 Post By:2012/8/18 17:46:00 [只看该作者]

还是未能去重,除了去除重复之外,最好能手动选择要导入的EXCEL文件
[此贴子已经被作者于2012-8-18 17:54:00编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/18 18:06:00 [只看该作者]

没看出来哪行是重复的

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


加好友 发短信
等级:幼狐 帖子:102 积分:912 威望:0 精华:0 注册:2012/5/20 6:57:00
  发帖心情 Post By:2012/8/18 18:56:00 [只看该作者]

问题解决了,非常感谢,原来我把中间有空行的列删除就没问题了,看来对于空行还需要修改代码
[此贴子已经被作者于2012-8-18 19:06:16编辑过]

 回到顶部