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

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

    黄舟黄舟2017-02-18 10:42:32原创950

    最近在做导入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 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • asp.net 图片验证码的HtmlHelper• asp.net反射简单应用实例代码• C#中GDI+编程10个基本技巧二• 【c#教程】C# 命名空间(Namespace)• ASP.NET使用Ajax如何返回Json对象的方法具体介绍
    1/1

    PHP中文网