C# 无法理解为什么我获取Excel文件的System.Data.OleDb.OLEDBEException

C# 无法理解为什么我获取Excel文件的System.Data.OleDb.OLEDBEException,c#,.net,excel,c#-4.0,oledb,C#,.net,Excel,C# 4.0,Oledb,我在OleDbDataReader=cmd.ExecuteReader处得到错误 这是输出 “System.Data.OleDb.OLEDBEException”类型的第一次意外异常 在System.Data.dll System.Data.OleDb.OLEDBError集合中发生 Microsoft Jet数据库引擎找不到对象“Sheet1”。 确保对象存在,并拼写其名称和路径 正确命名。嗯 只是想一想:我在一个选择了64位平台目标的项目中使用Excel驱动程序时,有oledb异常。尝试转到

我在OleDbDataReader=cmd.ExecuteReader处得到错误

这是输出

“System.Data.OleDb.OLEDBEException”类型的第一次意外异常 在System.Data.dll System.Data.OleDb.OLEDBError集合中发生 Microsoft Jet数据库引擎找不到对象“Sheet1”。 确保对象存在,并拼写其名称和路径 正确命名。嗯


只是想一想:我在一个选择了64位平台目标的项目中使用Excel驱动程序时,有oledb异常。尝试转到“项目设置”并将“生成”选项卡上的平台目标更改为x86。

尝试更改以下行注意$:

    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.Filter = "Excel files (*.xls)|*.xls|All files (*.*)|*.*";
    openFileDialog1.FilterIndex = 2;
    openFileDialog1.RestoreDirectory = true;

    // Show the dialog and get result.
    DialogResult result = openFileDialog1.ShowDialog();
    if (result == DialogResult.OK) // Test result.
    {
        labelFilePath.Text = openFileDialog1.FileName;
        string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + labelFilePath.Text.Trim() + ";Extended Properties=\"Excel 8.0;HDR=YES\"";
        using (var conn = new System.Data.OleDb.OleDbConnection(connString)) 
        { 
            conn.Open(); 
            try
            {
                using (OleDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "Select * From [Sheet1]";
                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        int firstNameOrdinal = reader.GetOrdinal("First Name");
                        int lastNameOrdinal = reader.GetOrdinal("Last Name");
                        while (reader.Read())
                        {
                            Console.WriteLine("First Name: {0}, Last Name: {1}", reader.GetString(firstNameOrdinal), reader.GetString(lastNameOrdinal));
                        }
                    }
                }
            }
            catch (OleDbException odbe)
            {
                Console.WriteLine(odbe.Errors.ToString());
                Console.WriteLine(odbe.Message.ToString());
            }
        } 

    }
    Console.WriteLine(result); // <-- For debugging use only.

}
在这种情况下,您选择的是工作表中的所有内容,但此符号扩展为选择命名范围,如下所示:

cmd.CommandText = "Select * From [Sheet1$]";

我们可以查看异常详细信息吗?您需要显示OLEDBEException.Message属性,可能还有innerException及其Message属性。文件是否已在excel实例或其他数据库连接(即SSMS)中打开?我没有打开该文件。Excel已关闭。否,您之前在connection.Open中引发了异常。但是这个exeption在成功连接后抛出。在cmd.ExecuteReader打开。
cmd.CommandText = "Select * From [Sheet1$NamedRange]";