Asp.net:使用blkCopy上传Excel文件并添加用户定义的列
本文关键字:添加 用户 定义 文件 Excel net 使用 blkCopy 上传 Asp | 更新日期: 2023-09-27 18:34:24
目前我的程序正在通过浏览器将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 来完成。填充表,添加列(具有默认值(,然后将表传递给大容量副本而不是数据读取器。
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);
}
}