C# 选择“在excel工作表中查询”
我对select查询有问题。我的目标是在excel工作表中选择一些列,并将它们复制到我的sql表中。我有六列要复印。当我试图复制由于标识列而更改的订单时 这是我的密码C# 选择“在excel工作表中查询”,c#,sql,excel,C#,Sql,Excel,我对select查询有问题。我的目标是在excel工作表中选择一些列,并将它们复制到我的sql表中。我有六列要复印。当我试图复制由于标识列而更改的订单时 这是我的密码 string path = Server.MapPath(Session["excel_sheet"].ToString()); //Create connection string to Excel work book string excelConnectionString = @"Prov
string path = Server.MapPath(Session["excel_sheet"].ToString());
//Create connection string to Excel work book
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
OleDbCommand cmd2 = new OleDbCommand("Select [column_1],[column_2],[column_3],[column_4],[column_5],[column_6] from [Sheet1$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd2.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(con);
//Give your Destination table name
sqlBulk.DestinationTableName = "MYtable";
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
我的表有如下列:identity\u列、column\u 1、column\u 2、column\u 3、column\u 4、column\u 5、column\u 6
例如,excel列_4字符串中的副本写入sql列_3后,它必须写入列_4。我在等待答案您应该使用SqlBulkCopy类的ColumnMappings属性 例如:
sqlBulk.ColumnMappings.Add("column_1", "column_1");
sqlBulk.DestinationTableName = "MYtable";
您可以遍历列并映射它们,这将把excel中的列名映射到连接中的相同名称(即excel column_1=sql column_1)
SqlBulkCopy sqlBulk=newsqlbulkcopy(con);
//定义列映射
for(int i=0;i
SqlBulkCopy sqlBulk = new SqlBulkCopy(con);
//Define column mappings
for (int i = 0; i < dReader.FieldCount; i++)
{
sqlBulk.ColumnMappings.Add(dReader.GetName(i), dReader.GetName(i));
}