【发布时间】:2016-06-17 11:06:23
【问题描述】:
我有这段代码可以正常工作,并将 Excel 数据加载到 SQL 表中。唯一的问题是它还会插入一个新行,所有列的值为 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 + "]" -
excel文件默认只有一张“sheet1”所有文件。所以它对我有用。
标签: c# sqlbulkcopy