[英]SqlBulkCopy C# Excel all data with sheet names
我想将Excel工作表数据插入SQL Server。 这个Excel数据表有很多工作表,我想用excel工作表名称插入所有数据。 我写的代码在我的SQL Server表中插入了两步。
您能告诉我如何插入具有特定工作表名称的数据吗?
例如
Name Address WorksheetName
N1 A1 Sheet1
N2 A2 Sheet1
N3 A3 Sheet2
码:
OleDbConnection oledbconn = new OleDbConnection(excelConnectionString);
oledbconn.Open();
DataTable dt = oledbconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
Response.Write("No record Found");
//return;
}
DataRow row = dt.Rows[1];
// Get Excel sheet Name
//String[] SheetName = new String[dt.Rows.Count];
foreach (var sheetName in GetExcelSheetNames(excelConnectionString))
{
for (int c = 0; c < sheetName.Length; c++)
{
string SheetName = row[c].ToString();
string myExcelDataQuery = "SELECT * FROM [" + SheetName + "]";
OleDbCommand oledbcmd = new OleDbCommand(myExcelDataQuery, oledbconn);
OleDbDataReader dr = oledbcmd.ExecuteReader();
string conn = ConfigurationManager.ConnectionStrings["TlcmealsContext"].ConnectionString;
SqlConnection connectionString = new SqlConnection(conn);
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
{
bulkCopy.DestinationTableName = "ExcelTemps";
try
{
bulkCopy.WriteToServer(dr);
bulkCopy.WriteToServer(dt.CreateDataReader());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// Close the SqlDataReader. The SqlBulkCopy
// object is automatically closed at the end
// of the using block.
dr.Close();
}
}
}
}
您是否尝试使用内置SQL选项从EXCEL导入数据?
这对我来说可以从EXCEL / Access导入数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.