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

最近在做导入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";
                    } 
时间: 2024-09-27 01:28:51

C# Excel数据验重及Table数据验重的相关文章

C# Excel检验数据是否重复及Table检验数据是否重复

最近在做导入Excel数据的时候,要检验数据是否重复: 1.要检验Excel数据本身是否有重复? 2.Excel中的数据是否与数据库中的数据重复? 一.检验Excel中数据是否重复的方式有: 1.将Table中的数据使用select语句来过滤(此处略,可以参考二). 2.使用for循环来手动核对,代码如下: #region 记录Excel中的重复列 /// <summary> /// 记录Excel中的重复列 /// </summary> /// <param name=&q

求帮助啊 急用啊-实现客户端以excel形式保存table数据

问题描述 实现客户端以excel形式保存table数据 服务器通过response.getOutPutStrem流传输文件,设置了contype了,浏览器调试网络中也显示就数据传输,在什么不提示下载呢? 解决方案 你传了一堆字符串给我,我怎么去下载呢?导出excel需要在后台把数据封装成excel文件吧.

如何利用Excel的Power Query快速转换数据

  在管理学生成绩的实践当中,成绩原始数据往往按学生条目记录(图1).若需要转换为以学号.姓名.学科.成绩.等第进行分列的表式效果,数据量大,逐一复制.粘贴操作显然相当繁琐.利用Excel的Microsoft Power Query加载项可实现快速转换(Excel 2016已经包含Microsoft Power Query组件,可以在"数据"选项卡直接调用,其他版本需在微软官方http://dwz.cn/2J93Jh 复制网址 下载安装). 1. 数据转换为表 打开数据表,切换到&qu

Excel中轻松查找删除重复数据(Excel 2007)

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",下面就为大家介绍Excel中轻松查找删除重复数据 的技巧. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择

《精通QTP——自动化测试技术领航》—第1章1.8节数据池(Data Table)的应用

1.8 数据池(Data Table)的应用 精通QTP--自动化测试技术领航 阶段要点 熟悉测试数据和脚本业务分离的好处和优势. 学会利用Data Table将测试数据与业务分离. Global Sheet与Local Sheet的区别. Test DataTable VS Run-time DataTable. DataTable常用方法指引. 1.8.1 引言 作为一个QTP自动化测试工程师,学会使用Data Table是必不可少的.Data Table其实和Excel非常相似,几乎可以说

用npoi将excel数据导入到数据库,数据0.9变成了.9怎么办

问题描述 用npoi将excel数据导入到数据库,数据0.9变成了.9怎么办 DataTable table = new DataTable(); OpenFileDialog opfile = new OpenFileDialog(); opfile.Filter = " xlsx files(*.xls)|*.xls|All files(*.*)|*.*";//选择保存的格式(显示格式|实际格式) if (opfile.ShowDialog() == DialogResult.OK

如何在Excel中提取空格两边的数据

Excel怎样提取空格两边的数据呢?很多时候我们需要用Excel提取空格左边或右边的数据,现在我们便来分享一下Excel提取空格前后数据的技巧. 一.Excel分列.Excel中分列是对某一数据按一定的规则分成两列以上.以office2007为例,数据--分列-- 分隔符号--下一步--钩起空格--下一步--选好目标区域-完成.

保护Excel表格的隐藏单元格数据不被删除

如果Excel表格中含有隐藏行或者隐藏列,我们简单用全选所有单元格再按"Del"键删除数据的时候,会发现隐藏单元格的数据也跟着被删除了. 今天我们介绍一个Excel中的数据删除小技巧--在批量删除数据时保护隐藏单元格的数据不被删除. 比如下图的Excel表格,有五列数据. 现在我们隐藏C列和D列的数据(用鼠标右键点击C,从菜单中选择"隐藏"). 如果我们只是简单地全选所有数据,按下"Del"键,当我们展开隐藏列时,会发现所有的数据都被删除了.

在Excel表格中按行对数据排序的方法

  在Excel表格中按行对数据排序的方法          1.启动Excel 2013并打开工作表,选择工作表中的所有数据.打开"排序"对话框,单击"选项"按钮打开"排序选项"对话框,在"方向"栏中选择"按行排序"单选按钮,如图1所示. 图1 选择"按行排序"单选按钮 2.单击"确定"按钮关闭"排序选项"对话框,再在"排序"