Foxtable(狐表)用户栏目专家坐堂 → 关于excel导入基本信息,如何自动覆盖重复值,已上传附件


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

主题:关于excel导入基本信息,如何自动覆盖重复值,已上传附件

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


加好友 发短信
等级:二尾狐 帖子:530 积分:4520 威望:0 精华:0 注册:2013/4/27 22:20:00
关于excel导入基本信息,如何自动覆盖重复值,已上传附件  发帖心情 Post By:2013/5/19 14:25:00 [只看该作者]

希望各位老师闲余之时能帮我解决问题,当excel里某行的新EG号在SPXX里已经存在,则用excel里的覆盖SPXX原有的记录。

万分感谢!

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

[此贴子已经被作者于2013-5-19 14:35:37编辑过]

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


加好友 发短信
等级:狐神 帖子:4648 积分:33890 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/5/19 14:29:00 [只看该作者]

那些覆盖那些
搞不懂

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


加好友 发短信
等级:二尾狐 帖子:530 积分:4520 威望:0 精华:0 注册:2013/4/27 22:20:00
  发帖心情 Post By:2013/5/19 14:34:00 [只看该作者]

你好,就是说我表SPXX里面已经存在了某个新EG号,如果excel里有一行相同的新EG号,就用excel里的数据覆盖SPXX里原有的记录,

如果没有肯定是往下添加了


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


加好友 发短信
等级:狐神 帖子:4648 积分:33890 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/5/19 14:59:00 [只看该作者]

合并数据

如果订单表中已经存在相同编号的订单,那么就跳过此订单,可以将代码改为:

Dim Book As New XLS.Book("c:\test\订单.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 bh As String = sheet(n,0).Text
   
If DataTables("订单").Find("编号 = '" & bh & "'") 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()

提示:其实我们用Merger合并数据会会更加简单,上述代码的目的是给大家提供另一种思路,因为在一些特殊情况下,Merger可能无法正常合并数据。


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/19 15:18:00 [只看该作者]

樓主的Excel文件格式有問題:無法按設定的合併條件合併(Excel文件格式最好為2003)

Dim n1,n2 As Integer
n1 = DataTables("SPXX").DataRows.count-1

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" '指定格式
    mg.SourceTableName = "Sheet1$" '指定要合并的表
    mg.DataTableName = "SPXX" '指定接收数据的表
    mg.Merge() '开始合并
    mg.filter ="新EG号 > ''"
    
End If

If n1 < DataTables("SPXX").DataRows.count-1 Then
    For  n2 = n1  To  0  Step -1
        dr1 = DataTables("SPXX").Find("新EG号 = '" & Tables("SPXX")(n2,"新EG号")  & "' and [_Identify]> " & Tables("SPXX")(n2,"_Identify"))
        If dr1 IsNot Nothing Then
            Tables("SPXX").Rows(n2).Delete
        End If
    Next
End If
DataTables("SPXX").Save
[此贴子已经被作者于2013-5-19 15:33:14编辑过]

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


加好友 发短信
等级:二尾狐 帖子:530 积分:4520 威望:0 精华:0 注册:2013/4/27 22:20:00
  发帖心情 Post By:2013/5/19 16:02:00 [只看该作者]

谢谢楼上各位的回答,万分感谢
[此贴子已经被作者于2013-5-19 16:02:35编辑过]

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


加好友 发短信
等级:三尾狐 帖子:682 积分:5263 威望:0 精华:0 注册:2012/6/6 14:37:00
  发帖心情 Post By:2013/5/19 20:19:00 [只看该作者]

合并数据学习


 回到顶部