0
我試圖導入Excel工作表到SQL Server數據庫。發生的問題是列映射。 如果在Excel工作表的列名稱與句號結束(例如:「編號」,「名稱」),C#被拋出異常SqlBulkCopy映射問題與全列在列名
消息=給定的ColumnName「號」與數據源中的任何列 不匹配。
但是,如果我刪除了fullstop,它工作得很好。
在C#中映射的源代碼如下
private void InsertExcelRecords()
{
string FilePath = "C:\\Upload\\" + FileUpload.FileName;
string fileExtension = Path.GetExtension(FileUpload.PostedFile.FileName);
FileUpload.SaveAs("C:\\Upload\\" + FileUpload.FileName);
ExcelConn(FilePath, fileExtension);
Econ.Open();
DataTable dtExcelSheetName = Econ.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
Query = string.Format("Select * FROM [{0}]", getExcelSheetName + "A7:I");
OleDbCommand Ecom = new OleDbCommand(Query, Econ);
DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);
Econ.Close();
oda.Fill(ds);
DataTable Exceldt = ds.Tables[0];
connection();
SqlBulkCopy objbulk = new SqlBulkCopy(con);
objbulk.DestinationTableName = "BankTransaction";
objbulk.ColumnMappings.Add("No", "Number");
con.Open();
objbulk.WriteToServer(Exceldt);
con.Close();
}
請讓我知道如果你需要任何更多的信息。
錯誤是明確的,無關與Excel來代替你的代碼
。你的映射表示在你的Exceldt中有一個名稱爲「No.」的列,它並不存在。你檢查了DataTable的列名嗎?如果它的工作沒有完整的停止,這意味着列名不*完全停止 –
@PanagiotisKanavos,感謝您的快速響應,我的問題的意思是,Excel表中的列名稱也以fullstop結尾,然後這個錯誤即將到來。如果我手動重命名列名並從兩者(excel表格和列映射)中刪除全部停止,則會出錯。 –
您正在使用DataTable,而不是工作表。什麼是* DataTable *的列名?無論如何,你是如何創建它的?如果您想問爲什麼DataColumn沒有完整的版本,請發佈您用於加載DataTable –