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

OK、私はそれを解決しました:

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

于 2009-06-04T14:59:06.320 に答える