【问题标题】:Compare data from worksheet for insert or update to a database比较工作表中的数据以插入或更新到数据库
【发布时间】:2015-05-01 16:18:46
【问题描述】:

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

一些朋友告诉我有关使用“横向 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();
               
            }
        }

【问题讨论】:

    标签: c# sql asp.net excel xlsx


    【解决方案1】:

    你快到了。我将从 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
        }
    

    【讨论】:

    • 你能提供一些细节吗?
    • 在我的数据库中,我有 ID_DB、Description_DB 和 Price_DB 的表项目,还有我的文件 Excel (xlsx),其中包含三列 ID_E、Description_E 和 Price_E,然后我需要比较每个单元格在 ID_E 列 (Excel) 中使用 ID_DB 。如果存在,将 Price_DB 更改为 Price_ID,如果不存在,我在数据库 ID_DB、Description_DB、Price_DB 中创建一个新项目,其中包含数据 ID_E、Description_E、Price_E。感谢您的帮助
    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多