2009-06-04 6 views
1

J'ai plus ou moins exactement la même erreur que dans this post, mais cette solution n'a pas résolu mon problème.Erreur de lecture d'Excel en C#: "... impossible de trouver l'objet ..."

Le message d'erreur que je reçois:

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.

J'ai vérifié et revérifié que le nom est juste, j'ai renommé la feuille et copier-coller le nom dans mon code, mais rien ne semble fonctionner . Qu'est-ce que je fais mal?

Ceci est mon code:

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

Y a-t-il une chance que ce soit Addresser $? Deux d's? – Crispy

+0

Non - en suédois il est épelé avec seulement un d ...;) –

Répondre

3

OK, je l'ai résolu:

Il se trouve, ce fournisseur a pu se connecter correctement à une feuille de calcul Excel 2003, mais n'a pas pu le lire. Ainsi, je a ouvert la feuille de calcul dans Excel 2007 et l'a réenregistré au format .xlsx, et a modifié ma chaîne de connexion en conséquence. Tout fonctionne maintenant =)

+0

C'est malade (je veux dire que c'est une mauvaise chose, quel que soit l'argot courant). Il devrait être toujours capable de lire les versions plus anciennes à moins qu'il y ait une pause PUBLIÉE BIEN. – RolandTumble

+0

Il est malade. La pire chose est qu'il se plaignait de ne pas trouver la feuille de travail - pas de ne pas être capable de lire le fichier. Non seulement le problème est stupide, le message d'erreur n'est pas directement utile non plus ... Soupir ... –

+0

J'avais oublié de spécifier l'extension du fichier, donc il ne pouvait pas le trouver - mais l'erreur était qu'il ne pouvait pas trouvez la feuille de travail! – Cosmin

Questions connexes