C# Excel数据验重及Table数据验重
http://blog.csdn.net/jiankunking/article/details/38398087
最近在做导入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数据验重的更多相关文章
- 前端Table数据导出Excel使用HSSFWorkbook(Java)
一.实现原理: 1. 前端查询列表数据并渲染至table(<table>...</table>)表格 2. 表格html代码传输至后台 3. 后台把html转成Excel输出流 ...
- html5中 table数据导出到excel文件
JS代码: /** * table数据导出到excel * 形参 table : tableId ; * sheetName : 工作薄名 * fileName : 文件名 * linkId :隐藏的 ...
- 【HTML5版】导出Table数据并保存为Excel
首发我的博客 http://blog.meathill.com/tech/js/export-table-data-into-a-excel-file.html 最近接到这么个需求,要把<tab ...
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- 检验Excel中数据是否与数据库中数据重复
#region 记录Excel中的重复列 /// <summary> /// 记录Excel中的重复列 /// </summary> /// <param name=&q ...
- excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)
将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...
- python定时重跑获取数据
做大数据的童鞋经常会写定时任务跑数据,由于任务之间的依赖(一般都是下游依赖上游的数据产出),所以经常会导致数据获取失败,因为很多人发现数据失败后 都会去查看日志,然后手动去执行自己的任务.下面我实现了 ...
- table数据表格添加checkbox进行数据进行两个表格左右移动。
<table class="table table-hover table-striped table-condensed newDateList"> <thea ...
随机推荐
- Kotlin使用率达35%,Java要退位了?
在今年的Google I/O大会上,关于Kotlin,Google只说了只言片语: 在过去一年里,有35%的专业Android开发者在使用Kotlin,其中95%的开发者都对Kotlin非常满意. 之 ...
- BZOJ 3786: 星系探索 ETT
Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球 ...
- 按键——Button事件监听器
button_1.setOnClickListener(new View.OnClickListener() { @Override public void onCl ...
- CDOJ 1057 秋实大哥与花 线段树 区间更新+区间查询
链接: I - 秋实大哥与花 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit ...
- Python黑科技:FuckIt.py
说起 Python 强大的地方,你可能想到是它的优雅.简洁.开发速度快,社区活跃度高.但真正使得这门语言经久不衰的一个重要原因是它的无所不能,因为社区有各种各样的第三库,使得我们用Python实现一个 ...
- 基于数组阻塞队列 ArrayBlockingQueue 的一个队列工具类
java语言基于ArrayBlockingQueue 开发的一个根据特定前缀和后缀的队列.每天自动循环生成. 1.定义队列基类 Cookie package com.bytter.util.queue ...
- Python爬取中文页面的时候出现的乱码问题
一.读取返回的页面数据 在浏览器打开的时候查看源代码,如果在头部信息中指定了UTF-8 那么再python代码中读取页面信息的时候,就需要指定读取的编码方式: response.read().deco ...
- python数据类型之 元祖、列表字典
Python中元祖,列表,字典 Python中有3种內建的数据结构:列表.元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的项目应该包 ...
- mysql数据库修改一行数据格式不成功问题
举个例子: mysql数据库中有两个字段publication_time.storage_time,我尝试着一个一个的修改字段的状态 #alter table books modify column ...
- 什么是webpack以及为什么使用它
什么是webpack以及为什么使用它 新建 模板 小书匠 在ES6之前,我们要想进行模块化开发,就必须借助于其他的工具.因为开发时用的是高级语法开发,效率非常高,但很可惜的是,浏览器未必会支持或认识 ...