Ошибка чтения из Excel в C #: «... не удалось найти объект ...» - PullRequest
1 голос
/ 04 июня 2009

У меня более или менее точно такая же ошибка, как в в этом посте , но это решение не решило мою проблему.

Я получаю сообщение об ошибке:

The Microsoft Office Access database engine could not find the object 'Adresser$'.  
Make sure the object exists and that you spell its name and the path name correctly.

Я проверил и дважды проверил правильность имени, я переименовал лист и скопировал имя в свой код, но, похоже, ничего не работает. Что я делаю не так?

Это мой код:

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

1 Ответ

3 голосов
/ 04 июня 2009

ОК, я решил:

Оказывается, этот поставщик смог правильно подключиться к листу Excel 2003, но не смог прочитать его. Таким образом, я открыл рабочий лист в Excel 2007 и повторно сохранил его в формате .xlsx , и соответственно изменил строку подключения. Теперь все работает =)

...