使用新的Excel列值更新数据库表列值

时间:2011-05-02 19:34:35

标签: sql-server excel

我在数据库中有一个表。

id : Name : Category
--------------------
1  : jake : admin

我使用sqlbulkcopy从包含两列“Name”和“Category”的excel表中将新行插入数据库表。

现在,我有另一项要求,那就是从同一个Excel工作表中更新列NameCategory的值,但使用新更新的值。我的问题是,这可能吗?我只需要一种方法来更新列的值。我经历了这个参考。

update SQl table from values in excel

但我不知道如何实现它。

任何帮助或建议都将非常感激。

感谢。

使用sqlbulkcopy上传和导入excel文件的代码如下。

protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        FileUpload1.SaveAs(Server.MapPath("~/" + Path.GetFileName(FileUpload1.FileName)));
        string file = Server.MapPath("~/"+Path.GetFileName(FileUpload1.FileName));
        string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Excel 8.0; Extended Properties=HDR=Yes;IMEX=1; Data Source=" + file + ";";

        using (OleDbConnection olecon = new OleDbConnection(constr))
        {
            OleDbCommand olecmd = new OleDbCommand("select Name, Category FROM [Sheet1$]", olecon);
            olecon.Open();

            using (DbDataReader dbrdr = olecmd.ExecuteReader())
            {
                string sqlcon = "Data Source=matty2011-PC\\SQLEXPRESS;Initial Catalog=mydb; Integrated Security=True";

                using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(sqlcon))
                {
                    sqlbulkcopy.ColumnMappings.Add(0, 1);
                    sqlbulkcopy.ColumnMappings.Add(1, 2);
                    sqlbulkcopy.DestinationTableName = "exceldata";
                    sqlbulkcopy.WriteToServer(dbrdr);
                }
            }
        }
    }
    else
    {
        Response.Write("Please select a file for upload.!"); return;
    }
}

1 个答案:

答案 0 :(得分:0)

  

     

如果可能的话使用SSIS来解决   只需通过DTS

注意:SSIS DTS将附加现有数据