• 技术文章 >后端开发 >C#.Net教程

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

    黄舟黄舟2017-02-18 10:42:32原创695
    最近在做导入Excel数据的时候,要检验数据是否重复:
    1、要检验Excel数据本身是否有重复?

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

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


           #region  记录Excel中的重复列
            /// <summary>
            /// 记录Excel中的重复列
            /// </summary>
            /// <param name="dt">需要获取重复列的表</param>
            /// <returns>提示重复信息</returns>
            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中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:C# 将 Json 解析成 DateTable 下一篇:C# 读取Excel中的数据
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• C#学习日记21----封装 与 访问修饰符• C#里partial关键字的作用(转摘) • SUNWEN教程之----C#进阶(五)• Redis教程(十五):C语言连接操作代码实例• C#基础知识整理:基础知识(11) 值类型,引用类型
    1/1

    PHP中文网