2015-05-01 69 views
0

我有一個Excel中的ID,描述和價格列,然後我使用FileUpload來收取文件,但必須讀取ID每列,看看是否有一個數據庫表中的項目我也有同樣的ID,描述,價格那麼如果ID存在我比較價格和升級,如果這是不同的和另一種情況我插入表中ID與ID,描述和價格的表存在。從工作表中比較插入或更新數據庫的數據

有些朋友告訴我關於使用「橫向e​​xcel電子表格」,但我看不到任何例子。

protected void Button1_Click(object sender, EventArgs e) 
 
     { 
 
      if(FileUpload1.HasFile){ 
 
       string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName))); 
 
       FileUpload1.PostedFile.SaveAs(path); 
 
       OleDbConnection OleDbcon = new OleDbConnection("Provider = Microsoft.Ace.OLEDB.12.0; Data Source=" + path + ";Extended Properties= Excel 12.0;"); 
 
       OleDbCommand cmd = new OleDbCommand("Select * from [Sheet1$]", OleDbcon); 
 
       OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd); 
 
    
 
       OleDbcon.Open(); 
 
       DbDataReader dr = cmd.ExecuteReader(); 
 
       
 
      } 
 
     }

回答

0

你幾乎沒有。我會從Excel文件中獲取數據並將DataReader加載到DataTable中。此外,您可以使用第二個DataTable從數據庫中檢索數據。在內存中加載兩個DataTable後,您可以輕鬆應用業務邏輯進行比較。

DataTable DT_Excel = new DataTable(); 
    DT_Excel.Load(DbDataReader); 
    //Load data into a DataTable 


    DataTable DT_DataBase = new DataTable(); 
    DT_DataBase = GetDataFromDatabase(); 

    //A simple loop to compare the data 
    foreach (DataRow dtRow in DT_Excel.Rows) { 
      DT_DataBase.DefaultView.RowFilter = "ID = " + dtRow.Item("ID"); 
      if (DT_DataBase.DefaultView.ToTable.Rows.Count > 0) { 
        //Do something if record is already in the databse 
    } 
+0

它不工作:( – Alejandro

+0

你能否提供一些細節? – MAlvarez

+0

在我的數據庫我有我的ID_DB,Description_DB和Price_DB表項目,也是我有我有三列文件Excel文件(XLSX)ID_E ,Description_E和Price_E,然後我需要將ID_E列(Excel)中的每個單元格與ID_DB進行比較。如果它存在使用Price_ID更改Price_DB,並且如果不存在,則使用數據ID_E在數據庫ID_DB,Description_DB,Price_DB中創建新項目, Description_E,Price_E。感謝您的幫助 – Alejandro