Asp.net:使用blkCopy上传excel文件并添加用户定义的列

asp.net c# database sql sqlbulkcopy

目前,我的程序正在通过浏览器将excel文件上传到服务器。然后在服务器上读取该excel文件,并将其值放在数据库中。我想要解决的问题是我想添加一个列,但我希望它是用户定义的浏览器,我没有看到任何方法,因为我正在使用bulkCopy。

我想做的是允许用户在文本框中添加文本,例如MAR12或APR12,然后上传excel文件,并将其添加到excel文件填充的每一列中。任何人都可以帮我解决问题。谢谢

string tableRows= "SELECT [id],[DateEntered],[User_ID] FROM [EPG$]";          

string EPGTableName = "tableName";               table in the database

这是excel文件被复制到数据库的位置:

        using (OleDbConnection connection = new OleDbConnection(connStr))
        {
            OleDbCommand command = new OleDbCommand(tableRows, connection);

            connection.Open();
            // Create DbDataReader to Data Worksheet
            using (DbDataReader dr = command.ExecuteReader())
            {
                // SQL Server Connection String
                string sqlConnectionString = "SERVER=<server>;UID=schafc;Trusted_Connection=Yes;DATABASE=<database>;";

                // Bulk Copy to SQL Server
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
                {
                    bulkCopy.DestinationTableName = tableName;
                    bulkCopy.WriteToServer(dr);
                }
            }
        }

热门答案

我不确定如何使用DataReader执行此操作,但可以使用DataAdapter和DataTable完成。填充表格,添加列(使用默认值),然后将表格传递给批量副本而不是datareader。

using (OleDbDataAdapter adapter = new OleDbDataAdapter(tableRows, connStr))
{
    DataTable table = new DataTable();
    adapter.Fill(table);
    table.Columns.Add(new DataColumn("@ColumnName", typeof(string), string.Format("'{0}'", textboxvalue)));
    // SQL Server Connection String
    string sqlConnectionString = "SERVER=<server>;UID=schafc;Trusted_Connection=Yes;DATABASE=<database>;";

    // Bulk Copy to SQL Server
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
    {
        bulkCopy.DestinationTableName = tableName;
        bulkCopy.WriteToServer(table);
    }
}


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因