“给定的ColumnMapping与源或目标中的任何列都不匹配”,而使用C#将Excel导入到SQL Server中时,

我收到一个错误

给定的ColumnMapping不匹配源或目标中的任何列

用下面的代码

private void button1_Click_1(object sender, EventArgs e) { of1.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm"; if ((of1.ShowDialog()) == System.Windows.Forms.DialogResult.OK) { imagepath = of1.FileName; //file path textBox1.Text = imagepath.ToString(); } } private void loadbtn_Click(object sender, EventArgs e) { string ssqltable = comboBox1.GetItemText(comboBox1.SelectedItem); string myexceldataquery = "select * from ["+ ssqltable + "$]"; try { OleDbConnection oconn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+imagepath+";Extended Properties='Excel 12.0 Xml; HDR=YES;IMEX=1;';"); string ssqlconnectionstring = "Data Source=.;Initial Catalog=Bioxcell;Integrated Security=true"; OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oconn); oconn.Open(); OleDbDataReader dr = oledbcmd.ExecuteReader(); SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring); bulkcopy.DestinationTableName = ssqltable; while (dr.Read()) { bulkcopy.WriteToServer(dr); } oconn.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } /* DisplayingData DD = new DisplayingData(); DD.Show();*/ } 

我认为SQL Server区分大小写,我复制相同的列名称,但相同的错误。

Excel文件

数据库

有没有办法解决?

像这样使用SqlBulkCopy.ColumnMapping

 for (int i = 0; i < dr.FieldCount; i++) { bulkcopy.ColumnMappings.Add(i, i); } 

我只是根据你的图片创build了一个testing表和一个testing文件。 它为我工作得很好,但只会添加第一行的数据。

也许你应该使用一个DataTable然后再试一次:

 DataTable dt = new DataTable(); dt.Load(oledbcmd.ExecuteReader()); SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring); bulkcopy.DestinationTableName = ssqltable; for(int i = 0; i < dt.Columns.Count; i++){ bulkcopy.ColumnMappings.Add(i,i); } bulkcopy.WriteToServer(dt); 

当我尝试像所有我的testing行被添加到数据库。