2009-06-04 5 views
1

this postと同じエラーが多かれ少なかれありますが、その解決策は私の問題を解決していません。C#でExcelから読み込み中にエラーが発生しました: "...オブジェクトが見つかりませんでした..."

私が取得エラーメッセージ:

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

もしもAddresser $になるはずです。二人? – Crispy

+0

いいえ - スウェーデン語では1つだけの綴りです...;) –

答えて

3

OK、私はそれを解決:

それは結局のところ、このプロバイダは、Excel 2003のワークシートに正しく接続することができましたが、それを読むことができませんでした。したがって、私はExcel 2007でワークシートを開き、.xlsx形式に再保存し、それに応じて接続文字列を変更しました。それは今すべて働いています=)

+0

それは病気です(私は悪いこととして、現在のスラングが何であれ)。よく知られた休憩がない限り、常に古いバージョンを読むことができるべきです。 – RolandTumble

+0

病気です。最悪のことは、ワークシートを見つけられなかったことを訴えたことです。ファイルを読み取ることができないということではありません。問題がばかげているだけでなく、エラーメッセージが直接役に立ちません...一口... –

+0

ファイルの拡張子を指定するのを忘れてしまったので、それを見つけることができませんでしたが、エラーはできませんでしたワークシートを見つける! – Cosmin

関連する問題