比较工作表中的数据以插入或更新数据库

时间:2015-05-01 16:18:47

标签: c# sql asp.net excel xlsx

我在Excel中有ID,描述和价格列然后我使用FileUpload来为文件收费,但是必须读取每列的ID并查看数据库中是否有一个表项目我有同样的ID,描述,价格然后如果ID存在我比较价格和升级,如果这是不同的和另一种情况我插入表格中ID,描述和价格不存在的excel的价格。

有些朋友告诉我使用“Transverse excel电子表格”,但我看不到任何例子。

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();
               
            }
        }

1 个答案:

答案 0 :(得分: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
    }