C# 使用OLEDB将excel文件加载到Sql时出错
这对我来说绝对不熟悉。我正在尝试使用以下方法加载excel文件:C# 使用OLEDB将excel文件加载到Sql时出错,c#,asp.net,sql-server,excel,C#,Asp.net,Sql Server,Excel,这对我来说绝对不熟悉。我正在尝试使用以下方法加载excel文件: protected void Button2_Click(object sender, EventArgs e) { try { if (FileUpload2.HasFile) { string path = string.Concat((Server.MapPath("~/members/temp/" + FileUpload2.FileName)));
protected void Button2_Click(object sender, EventArgs e)
{
try
{
if (FileUpload2.HasFile)
{
string path = string.Concat((Server.MapPath("~/members/temp/" + FileUpload2.FileName)));
FileUpload1.PostedFile.SaveAs(path);
// OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;");
OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0 Xml;HDR=YES;");
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", OleDbcon);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(cmd);
OleDbcon.Open();
DbDataReader dr = cmd.ExecuteReader();
string con_str = ConfigurationManager.ConnectionStrings["BOMConnectionString"].ConnectionString;
// Bulk Copy to SQL Server
SqlBulkCopy bulkInsert = new SqlBulkCopy(con_str);
bulkInsert.DestinationTableName = "Table_xxc";
bulkInsert.WriteToServer(dr);
OleDbcon.Close();
Array.ForEach(Directory.GetFiles((Server.MapPath("~/members/temp/"))), File.Delete);
Label2.ForeColor = Color.Green;
Label2.Text = "successfully inserted";
}
else
{
Label2.ForeColor = Color.Red;
Label2.Text = "Please select the File";
}
}
catch (Exception ex )
{
Response.Write("<script>alert(\"An error occurred. The file cannot be loaded to the DB. Check your formats in the excel file.\")</script>"); Response.Write("<script>alert(\"An error occurred. The file cannot be loaded to the DB. Check your formats in the excel file.\")</script>");
}
}
如果我使用SQLServerManagementStudio中的导入/导出功能,它可以正常工作。如果使用上述代码段,我会在OleDbcon.Open行中出错。
Thai是堆栈跟踪:
in System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
in System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
in System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
in System.Data.OleDb.OleDbConnection.Open()
in Material.Button2_Click(Object sender, EventArgs e) in c:\Users\Pink\Documents\Visual Studio 2012\Projects\^^WebSiteTemplateAccess - BOM\members\Training_Area.aspx.cs:riga 91
in System.Web.UI.WebControls.Button.OnClick(EventArgs e)
in System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
in System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
in System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
in System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
excel文件是excel 2007中的xml,但我也尝试了excel 2010,正如您在我的代码中看到的,我使用了相应的OLEDB驱动程序。我总是得到外部表不是预期的格式。
我需要一些帮助来解决这个问题。上述代码/格式是否有任何错误?如果出现异常,为什么不在问题中包含完整的细节,并指出它们出现在哪行?@DanielKelley,对此丹尼尔表示抱歉。我已经修改了问题并添加了详细信息。这个问题可能会有所帮助-@DanielKelley,谢谢。有趣的材料。我在找的时候没有找到它。“我会设法从中得到一些东西。”丹尼尔凯利,没有。尝试了好几种方法,但没有成功!
in System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
in System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
in System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
in System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
in System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
in System.Data.OleDb.OleDbConnection.Open()
in Material.Button2_Click(Object sender, EventArgs e) in c:\Users\Pink\Documents\Visual Studio 2012\Projects\^^WebSiteTemplateAccess - BOM\members\Training_Area.aspx.cs:riga 91
in System.Web.UI.WebControls.Button.OnClick(EventArgs e)
in System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
in System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
in System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
in System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)