Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OLEDB将excel文件加载到Sql时出错_C#_Asp.net_Sql Server_Excel - Fatal编程技术网

C# 使用OLEDB将excel文件加载到Sql时出错

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)));

这对我来说绝对不熟悉。我正在尝试使用以下方法加载excel文件:

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)