C# Excel資料驗重及Table資料驗重

來源:互聯網
上載者:User
最近在做匯入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資料驗重 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.