C# Excel数据验重及Table数据验重

最近在做导入excel数据的时候,要检验数据是否重复:
        1、要检验excel数据本身是否有重复?

        2、Excel中的数据是否与数据库中的数据重复?

一、检验Excel中数据是否重复的方式有:
        1、将Table中的数据使用select语句来过滤(此处略,可以参考二)。
        2、使用for循环来手动核对,代码如下:

       #region  记录Excel中的重复列        ///         /// 记录Excel中的重复列        ///         /// 需要获取重复列的表        /// 提示重复信息        private string GetDistinctTable(DataTable dt)        {  //DataTable dtClone = dt;这种方式是错误的,因为这种情况,修改dtClone的同时dt也会被修改。            DataTable dtClone = dt.Clone(); ;            string vsSubAcctNo = string.Empty;            string vsAcctNo = string.Empty;            string repeatExcel = string.Empty;            string vsTransDate = string.Empty;            for (int i = dtClone.Rows.Count - 1; i >= 0; i--)            {                vsSubAcctNo = dtClone.Rows[i][4].ToString().Trim();                vsAcctNo = dtClone.Rows[i][1].ToString().Trim();                vsTransDate = dtClone.Rows[i][8].ToString().Trim();                dtClone.Rows[i].Delete();                dtClone.AcceptChanges();                for (int j = dtClone.Rows.Count - 1; j >= 0; j--)                { if (vsSubAcctNo == dtClone.Rows[j][4].ToString().Trim() && vsAcctNo == dtClone.Rows[j][1].ToString().Trim() &&  vsTransDate == dtClone.Rows[j][8].ToString().Trim())                    {                        //如果重复了,进行记录                        repeatExcel += "第" + (i + 1).ToString() + "行\r\n";                        break;                    }                }            }            return repeatExcel;        }        #endregion

小注:

clone应该修改为为copy

二、检验Excel中数据是否与数据库中数据重复的方式有:

       1、遍历Table并将其中每条数据,在数据库中检验重复。
        这种方式适用于Table中数据比较少(100以内),而数据库中要对比表很大的情况。因为这种方式要每对比一条数据,都要连接数据库,并执行查询,很费时间。
        大体测试了一下,Excel中有2000条数据,仅仅在数据库中查询,就消耗了7分40秒即4601000 毫秒(ms),大约一条数据耗时:2300.5毫秒
        其实,使用方式2导入2000条,耗时也比方式1导入100条,耗时少。
        2、将数据库中要对比的表数据取到一个dataset中,遍历Table并将其中每条数据,在dataset中检验重复,代码如下:

strTemp = "AcctNo='" + obZH.ToString() + "' and TransDate='" + obRQ.ToString() + "'  and SubAcctNo='" + obDFZH.ToString() + "'";                    rowsTemp = dsTemp.Tables[0].Select(strTemp);                    if (rowsTemp.Length>0)                    {                        //如果重复了,进行记录                        repeatDj += "第" + v.ToString() + "行\r\n";                    }

 以上就是C#  Excel数据验重及Table数据验重 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 06:27:53
下一篇 2025年12月10日 20:19:31

相关推荐

  • C# 读取Excel中的数据

    c# 读取excel中的数据 #region 读取Excel中的数据 /// /// 读取Excel中的数据 /// /// Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls /// Excel中的数据 private DataTable GetTable(st…

    好文分享 2025年12月17日
    000
  • C# 获取Excel工作薄中Sheet页(工作表)名集合

    c#  获取excel工作薄中sheet页(工作表)名集合 #region 获取Excel工作薄中Sheet页(工作表)名集合 /// /// 获取Excel工作薄中Sheet页(工作表)名集合 /// /// Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls …

    好文分享 2025年12月17日
    000
  • C# Timer 定时器应用

            关于c#中timer类 在c#里关于定时器类就有3个:        1.定义在system.windows.forms里        2.定义在system.threading.timer类里        3.定义在system.timers.timer类里        sy…

    2025年12月17日
    000
  • C# 动态加载Dll

    1、新建测试dll及方法,用vs2010新建winform程序,具体代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawi…

    好文分享 2025年12月17日
    000
  • C# 实体类序列化与反序列化一 (XmlSerializer)

    /// /// 实体类序列化的反序列化的类 /// /// public abstract class EntityClassXmlSerializer { /// /// 实体类序列化成xml string /// /// /// public static string ToXMLString(…

    好文分享 2025年12月17日
    000
  • C# Json 序列化与反序列化一

    public class JsonSerializer { /// /// json序列化 /// /// /// /// public static string JsonStringSerializer(T t) { DataContractJsonSerializer ser = new Da…

    好文分享 2025年12月17日
    000
  • C# 容器上控件排序

    public static class Sort { #region 设置PanelControl上按钮显示位置 /// /// 设置按钮显示位置 /// /// 需要调整按钮顺序的Panel /// 按钮间隔 public static void SetButtonCenter(Scrollabl…

    好文分享 2025年12月17日
    000
  • C# 移除数组中重复数据

    #region 移除数组中重复数据 /// /// 移除数组中重复数据 /// /// 需要除重的数组 /// 不重复数组 public static string[] DelRepeatData(string[] array) { return array.GroupBy(p => p).S…

    好文分享 2025年12月17日
    000
  • C# 字符串中多个连续空格转为一个空格

    #region 字符串中多个连续空格转为一个空格 /// /// 字符串中多个连续空格转为一个空格 /// /// 待处理的字符串 /// 合并空格后的字符串 public static string MergeSpace(string str) { if (str != string.Empty …

    好文分享 2025年12月17日
    000
  • C# 多态性

    转载自:MSDN 类似文章:点击打开链接  Polymorphism(多态性)是一个希腊词,指“多种形态”,多态性具有两个截然不同的方面:  发生此情况时,该对象的声明类型不再与运行时类型相同。  在运行时,客户端代码调用该方法,CLR 查找对象的运行时类型,并调用虚方法的重写方法。 因此,你可以在…

    2025年12月17日
    000
  • C# 自定义 implicit和explicit转换

    explicit 和 implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换explicti 表示显式转换,如从 a -> b 必须进行强制类型转换(b = (b)a)implicit 表示隐式转换,如从 b -> a 只需直接赋值(a = b) 隐式转换可以让我…

    2025年12月17日
    000
  • C# 多线程参数传递

    1、通过实体类来传递(可以传递多个参数与获取返回值),demo如下: 需要在线程中调用的函数: namespace ThreadParameterDemo{ public class FunctionClass { public static string TestFunction(string n…

    2025年12月17日
    000
  • C# 下载带进度条代码(普通进度条)

    /// /// 下载带进度条代码(普通进度条) /// /// 网址 /// 下载后文件名为 /// 报告进度的处理(第一个参数:总大小,第二个参数:当前进度) /// True/False是否下载成功 public static bool DownLoadFile(string URL, stri…

    2025年12月17日 好文分享
    000
  • C# 可以利用反射给只读属性赋值吗?

    结论:可以 验证demo如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;usi…

    2025年12月17日 好文分享
    000
  • C# 接口作用的深入理解

    原文地址:http://www.php.cn/ 假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程序员,用clsVBProgramer这个类表示;Delphi程序员指的是用Delphi写程序的程序员,用clsDelphiProgramer这个类来表示。每个类都有一个WriteCode()方…

    好文分享 2025年12月17日
    000
  • C# 对象比较(值类型、引用类型)

    #region 引用对象比较 /// /// 引用对象比较 /// /// /// /// public static bool CompareObject(object objA, object objB) { bool flag = false; if (objA == null || objB…

    好文分享 2025年12月17日
    000
  • C# datatable中重复数据去重

    #region datatable去重 /// /// datatable去重 /// /// 需要去重的datatable /// 依据哪些列去重 /// public static DataTable GetDistinctTable(DataTable dtSource, params str…

    好文分享 2025年12月17日
    000
  • C# WCF DataContractSerializer 类

         原文地址:点击打开链接       DataContractSerializer 类      使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档。 无法继承此类。      命名空间:  System.Runtime.Serialization        程序集:  …

    好文分享 2025年12月17日
    000
  • C# 实体类序列化与反序列化二 (DataContractSerializer)

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.Serialization;using System.IO;using System.Xml;…

    好文分享 2025年12月17日
    000
  • C# 将一个对象转换为指定类型

    原文地址:点击打开链接 适用:普通的对象,并且有默认的无参数构造函数 #region 将一个对象转换为指定类型 /// /// 将一个对象转换为指定类型 /// /// 待转换的对象 /// 目标类型 /// 转换后的对象 public static object ConvertToObject(o…

    好文分享 2025年12月17日
    000

发表回复

登录后才能评论
关注微信