1

我或多或少与这篇文章中的错误完全相同,但该解决方案并没有解决我的问题。

我得到的错误信息:

Microsoft Office Access 数据库引擎找不到对象“Adresser$”。  
确保对象存在并且正确拼写其名称和路径名。

我已经检查并仔细检查了名称是否正确,我已重命名工作表并将名称复制粘贴到我的代码中,但似乎没有任何效果。我究竟做错了什么?

这是我的代码:

string conStr = String.Format(
    @"Provider={0};Data Source=""{1}"";Extended Properties=""{2}""",
                "Microsoft.ACE.OLEDB.12.0",
                "REGISTER 090310.xls",
                "Excel 12.0 Xml;IMEX=1;HDR=YES;");
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
using (IDbConnection connection = factory.CreateConnection())
{
    connection.ConnectionString = conStr;
    using (IDbCommand command = connection.CreateCommand())
    {
        command.CommandText = "SELECT TOP 10 * FROM [Adresser$]";
        connection.Open();

        // The exception is thrown on this line, with yellow highlight on
        // IDataReader dr = command.ExecuteReader()
        using (IDataReader dr = command.ExecuteReader())
        {
            while (dr.Read())
            {
                Console.WriteLine(  
                    string.Format("First name: {0}\tLast name: {1}", 
                        dr[0].ToString(), 
                        dr[1].ToString()));
            }
        }
    }
}
4

1 回答 1

3

好的,我解决了:

事实证明,该提供程序能够正确连接到 Excel 2003 工作表,但无法读取它。因此,我在 Excel 2007 中打开了工作表并将其重新保存为.xlsxformat,并相应地更改了我的连接字符串。现在一切正常=)

于 2009-06-04T14:59:06.320 回答