2

SQL 経由で Excel シートをクエリするには、次のいずれかを使用していました。

Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;"""

また

Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + strPath + ";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;"""

Office 2010をインストールするまで、これはうまくいきました。

今、私は

Microsoft.Ace.OLEDB.12.0 プロバイダーは、このコンピューターの例外に登録されていません。

正しい接続文字列/プロバイダーを見つけるにはどうすればよいですか?

4

3 に答える 3

7

Excel 2010の場合は次のようになります。

Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=D:\\MyDocs\\oledb.xlsx;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:Engine Type=37"

これは私のビジュアル スタジオで機能しているように見えます。Excel でクエリ文字列を生成すると、余分なエントリが含まれていました。

于 2009-09-22T16:23:41.520 に答える
2

上記のアドバイスに従って、Office System Driver: Data Connectivity Components をダウンロードしてインストールしました。以下のコードが機能しました。

    string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Password=\"\";User ID=Admin;Data Source=d:\\Sample.xlsx;Mode=Share Deny Write;Extended Properties=\"HDR=YES;\";Jet OLEDB:Engine Type=37";

    OleDbConnection connection = new OleDbConnection(connectionString);

    try
    {
        connection.Open();

        OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = command;

        DataSet ds = new DataSet();
        adapter.Fill(ds);

        GridView1.DataSource = ds;
        GridView1.DataBind();

    }
    catch (Exception)
    {            
        //throw;
    }
    finally
    {
        connection.Close();
    }
于 2010-02-03T23:35:25.137 に答える
1

Access データベース エンジン (ACE) コンポーネントをアンインストールした可能性がありますか? これらは、MSDN から2007 Office System Driver: Data Connectivity Componentsとして引き続きダウンロードできます。

于 2009-09-23T08:41:16.620 に答える