以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Excel导入去重复 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59784) |
||||
-- 作者:lshshlxsh -- 发布时间:2014/11/11 8:08:00 -- Excel导入去重复 各位老师,请问一下这段代码如何去掉重复内容? Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog dlg.Filter= "Excel文件|*.xls|Excel文件|*.xlsx" \'设置筛选器 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 \' MessageBox.Show("你选择的是:" & dlg.FileName,"提示") \'提示用户选择的文件 Dim mg As New Merger mg.SourcePath =dlg.FileName mg.Format = "excel" \'指定格式 mg.SourceTableName = "AA$" \'指定要合并的表 mg.DataTableName = "表A" \'指定接收数据的表 mg.Merge() \'开始合并 End If |
||||
-- 作者:Bin -- 发布时间:2014/11/11 8:11:00 -- 要用另外的方式,编码合并才能去重复 http://www.foxtable.com/help/topics/2334.htm |
||||
-- 作者:lshshlxsh -- 发布时间:2014/11/11 8:18:00 -- 这种的话Excel顺序变了就导入错位了。我在DataColChanged事件判断有重复的删除,为什么第一次重复的时候没有提示,再倒入的时候就有提示工号姓名重复?
Select Case e.DataCol.name Case "工号","姓名" Dim dr As DataRow = e.DataRow If dr.IsNull("工号") = False AndAlso dr.IsNull("姓名") = False Then If e.DataTable.Compute("Count([_Identify])","工号 = \'" & dr("工号") & "\' And 姓名 = \'" & dr("姓名") & "\'") > 1 Then MessageBox.Show("已经存在相同工号和姓名的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) CurrentTable.Current.Delete() End If End If End Select [此贴子已经被作者于2014-11-11 8:32:23编辑过]
|
||||
-- 作者:Bin -- 发布时间:2014/11/11 8:27:00 -- 统一规格顺序比较好, 如果无法统一,可以遍历第一行(也就是标题) 进行判断
|
||||
-- 作者:lshshlxsh -- 发布时间:2014/11/11 8:35:00 -- 谢谢 我找到原因了 Select Case e.DataCol.name Case "工号","姓名" Dim dr As DataRow = e.DataRow If dr.IsNull("工号") = False AndAlso dr.IsNull("姓名") = False Then If e.DataTable.Compute("Count([_Identify])","工号 = \'" & dr("工号") & "\' And 姓名 = \'" & dr("姓名") & "\'") >= 1 Then MessageBox.Show("已经存在相同工号和姓名的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) CurrentTable.Current.Delete() End If End If End Select |