我有這個工作正常的代碼並將excel數據加載到SQL表中。唯一的問題是它也爲所有列插入一個新值爲NULL的行。SQLBulkCopy爲所有列插入一個具有NULL值的新行
using (OleDbConnection excel_con = new OleDbConnection(conString))
{
excel_con.Open();
string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
DataTable dtExcelData = new DataTable();
using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + Path.GetFileName(excelPath) + "]", excel_con))
{
oda.Fill(dtExcelData);
}
excel_con.Close();
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.mySQLTable";
sqlBulkCopy.BulkCopyTimeout = 200;
sqlBulkCopy.ColumnMappings.Add("Employee", "Employee_Name");
sqlBulkCopy.ColumnMappings.Add("Sal/Hourly", "Sal/Hourly");
sqlBulkCopy.ColumnMappings.Add("Total", "Total");
con.Open();
sqlBulkCopy.WriteToServer(dtExcelData);
con.Close();
}
}
}
此2988行不存在於Excel中,但代碼創建它。任何幫助表示讚賞。
這似乎有點不對。源表的名稱應該是表名(或名稱範圍)'「SELECT * FROM [」+ sheet1 +「]」' – Slai
excel文件默認只有一個表「sheet1」fot所有文件。所以它適用於我。 – Sak