首頁  >  文章  >  後端開發  >  C# Excel資料驗重及Table資料驗重

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

黄舟
黄舟原創
2017-02-18 10:42:321459瀏覽

最近在做導入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應該修改為copyr :

       1、遍歷Table並將其中每個數據,在資料庫中檢驗重複。

        此方式適用於Table中資料比例較少(100以內),而資料庫中則要比較表很大的情況。因為這種方式要每比較一條數據,都要連接資料庫,並執行查詢,很花時間。

        大體測試了一下,Excel中有2000條數據,僅在數據庫中查詢,就消耗了7分40秒即4601000 毫秒(ms),大約一條數據耗時:2300.5毫秒
      20 ,耗時也比方式1導入100條,耗時少。
        2、將資料庫中要比較的表格資料取到一個dataset中,遍歷Table並將其中每個數據,在dataset中檢驗重複,代碼如下:


就是以上C#  Excel資料驗重及Table資料驗重 的內容,更多相關內容請關注PHP中文網(www.php.cn)!




陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn