近来在做导入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数据验重 的内容,更多相关内容请关注ki4网(www.ki4.cn)!
上一篇:css white-space属性怎样用【css教程】,css,white-space属性
下一篇:python shell是什么【Python教程】,python shell
支付宝扫一扫打赏
微信扫一扫打赏
共 0 条评论关于"C# Excel数据验重及Table数据验重【C#.Net教程】,C#,Excel数据,Table数据"
最新评论