530

ボタン クリック イベントで Excel ファイルからデータを取得しようとしています。私の接続文字列は次のとおりです。

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

ボタンをクリックすると、次のエラーが発生しました。

'Microsoft.ACE.OLEDB.12.0' プロバイダーがローカル コンピューターに登録されていません。

これを修正する方法がわかりません。私のオペレーティングシステムは Windows 7 です。

4

38 に答える 38

623

さて、あなたはそれをインストールする必要があります。あなたが探しています:

于 2011-07-11T11:28:15.470 に答える
182

「Microsoft.ACE.OLEDB.12.0」プロバイダーを使用できるようにする「Microsoft Access データベース エンジン 2010 再頒布可能パッケージ」の 64 ビット バージョンは、http:
//www.microsoft.com/en-us/から入手できます。ダウンロード/詳細.aspx?id=13255

受け入れられた回答からのダウンロードを使用する場合は、@ backtestbroker.com で指摘されているように、x86 用にビルドする必要があります。

于 2013-02-22T19:53:33.983 に答える
55

最初に確認する必要があるのは、アプリケーションのビルド構成です。

  • プロジェクトを x86 プラットフォームでビルドした場合、問題を解決するには、マシンに次のパッケージをインストールする必要があります。

    1. 「Microsoft.ACE.OLEDB.12.0」プロバイダーを使用するには、 最初にMicrosoft Access データベース エンジン 2010 再頒布可能パッケージをインストールする必要 があります。このインストールは、http: //www.microsoft.com/download/en/details.aspxで入手できます。 ?id=13255 .

      インストールが完了したら、アプリケーションを実行してみます。これで問題が解決した場合は、ステップ 2 に進みます。

    2. この次のステップは、Office 2007 のデータ接続コンポーネントですが、Office 2010 でも機能する説明のつかない回避策です。これが機能する理由はよくわかりませんが、機能し、ほとんどすべてのケースで機能することが証明されています。2007 Office System Driver: Data Connectivity Componentsをインストールする必要があります。このインストールは http://www.microsoft.com/download/en/confirmation.aspx?id=23734で入手できます。

      このインストールが完了したら、アプリケーションを実行してみます。これで問題が解決するはずです。

  • x64 または AnyCPU プラットフォームでビルドされたアプリケーションを実行しようとしている場合は、まず x86 プラットフォームで期待どおりに動作することを検証することをお勧めします。その x86 プラットフォームで実行されない場合は、最初の部分の手順を実行し、期待どおりに実行されることを検証します。

    OLEDB データベース ドライバーを含む MS Access ドライバーは x86 プラットフォームでのみ動作し、x64 または AnyCPU プラットフォームでは互換性がないことを読みました。しかし、これは正しくないようです。x86 のビルド時にアプリケーションが実行されていることを確認し、パッシブ フラグを使用して Access データベース エンジンをインストールしました。

    1. 最初にファイルをローカルにダウンロードします インストールは次の場所からダウンロードできます: http://www.microsoft.com/en-us/download/details.aspx?id=13255
    2. 「/passive」フラグを指定してコマンド プロンプトを使用してインストールします。 コマンド プロンプトで次のコマンドを実行します。「AccessDatabaseEngine_x64.exe /passive」

    これらの 2 つの手順の後、x64 または AnyCPU ビルド構成でビルドした後、アプリケーションを実行することができました。これは私の問題を解決するように見えました。

注: 手順の順序が異なるようですので、それに応じてください。

于 2015-09-24T11:29:37.043 に答える
35

[構成マネージャー] ダイアログ ボックスでビルドを "x86" から "任意の CPU" に変更したときに、Visual Studio 2010 でこのエラー/例外が発生しました。私が理解しているこのOLEDBデータベースドライバーは、x86でのみ機能し、64ビットと互換性がありません。ビルド構成をx86に戻すと、問題が解決しました。

于 2013-02-15T19:42:27.903 に答える
31

MS ドライバーをインストールしましたが、それでも動作しませんでした。次に、この問題を解決したこのブログ投稿を見つけました。そこを読んでください。それ以外の場合は、これらの 2 つの画像 (その投稿からリンクされています) を TLDR の要約として使用します。

ここに画像の説明を入力

ここに画像の説明を入力

于 2015-09-09T10:56:48.897 に答える
17

これによってまだ影響を受けているすべての人のために。

私はエラーを取得しています...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

...OP、Shailesh Sahu で説明されているように。

私は64ビットのWindows 7を持っています。

私の問題はPowerShellスクリプト内にありますが、OPの投稿と同様に接続文字列を使用しているため、私の調査結果がC#、PowerShell、および「Microsoft.ACE.OLEDB」ドライバーに依存する他の言語に適用できることを願っています。

この MS フォーラム スレッドの指示に従いました: http://goo.gl/h73RmI

最初に64 ビットバージョンをインストールしてから、このページhttp://www.microsoft.com/en-us/download/details.aspx?id=13255から32 ビットバージョンの AccessDatabaseEngine.exe を インストールしてみました。

しかし、まだ喜びはありません。

次に、 PowerShellで以下のコードを実行しました(SQL Panda のサイトhttp://goo.gl/A3Hu96から) 。

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

...これにより、この結果が得られました(簡潔にするために他のデータソースを削除しました)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

ご覧のとおり、Microsoft.ACE.OLEDB があります。15 .0 (15) Microsoft.ACE.OLEDB ではありません。12.0 (12 )

そこで、接続文字列を 15 に修正したところ、うまくいきました。

そのため、バージョンをソフトコーディングする方法を示す簡単な PowerShell スニペット...

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

複数の場合、最新の ACE バージョンを選択するように修正

うまくいけば、これを見つけた人は、インストールされている OLEDB のバージョンを確認し、適切なバージョン番号を使用できるようになります。

于 2014-01-30T11:48:28.500 に答える
16

64 ビットを使用しているが、AccessDatabaseEngine をインストールした後も問題が解決しない場合は、この投稿を参照してください。これで問題が解決しました。

つまり、このAccessDatabaseEngineをインストールする必要があります

于 2013-04-13T06:25:41.153 に答える
7

Web プロジェクトをデバッグしている場合は、プロジェクトの設定に応じて、 IIS Expressが 32 ビットまたは 64 ビットで実行されていることを確認してください。

後藤

ツール > オプション > プロジェクトとソリューション > Web プロジェクト

そこから、「IIS Express の 64 ビット バージョンを使用する...」をチェック (またはチェック解除) します。

于 2016-07-13T05:23:23.810 に答える
4

私はこの同じ問題に直面しました。ソリューションのプロパティに移動し、任意の CPU を x86 に変更します。これでうまくいくと思います。

于 2018-07-20T18:22:35.237 に答える
4

syp_dino、

「Microsoft.ACE.OLEDB.12.0'プロバイダーがローカルマシンに登録されていません」というエラーに対してあなたが提案した私の解決策は、アクティブソリューションプラットフォームを「任意のCPU」から「x86」に変更することです。

これらの手順を実行し、ソリューションを再構築し、EXE を取得してネットワークに配置すると、Windows 7 64 ビット マシンですべてがスムーズに動作しました。

于 2014-06-26T14:20:03.170 に答える
2

Excelファイルを読んでいるときにも同様の問題があります。

問題の履歴:

最近、メモリ要件のため、アプリケーションを 32 ビットから 64 ビットに移行しました。そのために、Windows 7 を 32 ビットから 64 ビットに移行しました。それでも、マシンに 32 ビット オフィスをインストールしました。

これは、Excel データをアプリケーションにインポートする際にこの問題が発生したためです。

解決、

http://www.microsoft.com/en-us/download/details.aspx?id=13255の 64 ビット バージョンをダウンロードし、次の引数を使用してインストールしました。

AccessDatabaseEngine_x64.exe /passive

コードを変更しなくても、問題は解決します。

ノート:

64 ビット OS と 64 ビット オフィスでは、この修正を行わなくても機能は問題なく動作していました。この修正は、32 ビット オフィスがインストールされている 64 ビット OS でアプリケーションが 64 ビットで実行されている場合にのみ必要です。

于 2015-02-13T09:11:48.840 に答える
1

Microsoft Access データベース エンジン 2010 再頒布可能パッケージが既にマシンにインストールされていますが、Microsoft ACE OLEDB プロバイダー エラーが引き続き発生ます。

それから、最近 Office 2016 にアップグレードしたことを思い出したので、Microsoft Access Database Engine 2010 Redistributableを再インストールする必要があるかもしれません。そして、それは私のマシンの問題を修正しました。

そのため、別のバージョンの MS Office にアップグレードした場合、または MS Office を修復または再インストールした場合は、他の修正を見つけるために時間を無駄にする前に、Microsoft Access データベース エンジン 2010 再頒布可能パッケージを再インストールしてみてください。幸運を!

于 2016-04-18T18:39:14.870 に答える
1

1.) ConnectionStrings.comで接続文字列を確認します。

2.) 正しいデータベース エンジンがインストールされていることを確認します。これらは、私を助けた 2 つのデータベース エンジンでした。

Microsoft Access データベース エンジン 2010 再頒布可能パッケージ

2007 Office System ドライバー: データ接続コンポーネント

3.) ビルド ターゲット プラットフォームが「任意の CPU」であることに問題がある可能性があります。「X86」(プロパティ、ビルド、プラットフォーム ターゲット) である必要がある場合があります。

于 2015-05-19T16:08:50.730 に答える
1

私は同じ問題を抱えていましたが、この場合、microsoft-ace-oledb-12-0-providerは既にマシンにインストールされており、開発された他のアプリケーションで正常に動作していました。

これらのアプリケーションと私が問題を抱えていたアプリケーションの違いは、古いアプリケーションが「ローカル IIS」で実行されていたのに対し、エラーのあるアプリケーションは「IIS Express (Visual Studio から実行)」で実行されていたことです。それで私がしたことは-

  1. プロジェクト名を右クリックします。
  2. プロパティに移動
  3. 右側の Web タブに移動します。
  4. [サーバー] で [ローカル IIS] を選択し、[仮想ディレクトリの作成] ボタンをクリックします。
  5. アプリケーションを再度実行すると、機能しました。
于 2015-10-23T06:48:05.993 に答える
1

これらの手順を試すこともできます

SQL Server で、1.データベースを 1 つ開きます 2.[サーバー オブジェクト]オプションでクリックします 3.[リンク サーバー]でクリックします 4.[プロバイダー]でクリックします 5.[Microsoft.ACE.OLEDB.12.0]で右クリックします6.すべてのオプションのチェックを外して閉じます

于 2015-03-18T19:35:42.790 に答える
0
  • 私は何日も同じ問題に直面してきました。64 ビット用の OLEDB ドライバーをインストールし、Microsoft の Web サイトで入手できる 32 ビットも試しました。
  • Office 64bit版を再インストールしようとしましたが、なぜかうまくいきませんでした。IIS プール true で 32 ビット アプリケーションを許可しようとしました。
  • プロジェクト環境をX86、AnyMachine、Mixedに変更してみました。そして、インターネットで見つけたすべてのパッチをほとんど試しました。しかし、すべての解決策は私を失望させました。
  • 私たちがダウンロードしていたプロバイダーが最新であり、それとも動作していないことを最終的に知りました.
  • 私はそれをアンインストールし、oledb ドライバー 14.0.7015.1000をインストールしました。会社のリソースから取得したリンクがありません。Google で検索する必要があるかもしれませんが、動作します。私はマイクロソフトのこのダウンロードリンクに来て、それもうまくいきました...しかし、それはバージョン14.0.6119.5000ですが、うまくいきました。
于 2016-01-05T10:32:51.980 に答える
0

This worked for me right now.

  1. Visit this page then download that appropriated package for your computer (AccessDatabaseEngine.exe or AccessDatabaseEngine_X64.exe)
  2. Install that.
  3. Enjoy... Your codes are working now...

But for your application package you can use of any the following solutions:

  1. Go in C:\Program Files (x86)\Common Files\microsoft shared or C:\Program Files\Common Files\Microsoft Shared and put the OFFICE14 directory in the same location of your package file.

Or

  1. Attach two projects (in item1) to your installation package.
于 2018-06-27T10:05:50.840 に答える
-9

//.xls ファイルを読み込む

string strConnection = "";<br/>

string FileName = Server.MapPath("Student.xls");

strConnection = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties='Excel 8.0; HDR=Yes;IMEX=1;'";<br/>

try
{
    OleDbConnection conn1 = new OleDbConnection(strConnection);
    conn1.Open();
    DataTable dt = new DataTable();
    dt = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });

    Object sheetName = dt.Rows[0]["TABLE_NAME"];
    dt.Clear();
    dt.Columns.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + sheetName.ToString() + "]", conn1);
    da.TableMappings.Add("Table", "0");
    da.Fill(dt);

    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string ID = dt.Rows[i][0].ToString();
        string Name = dt.Rows[i][1].ToString();
        string City = dt.Rows[i][2].ToString();
        string Marks = dt.Rows[i][3].ToString();
    }
    conn1.Close();
}
catch
{
    throw;
}
//To Read xlsx file use following code
string strConnection = "";  <br/>
string FileName = Server.MapPath("Student.xlsx"); <br/>
strConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0 Xml;HDR={1};IMEX=1;'";<br/>

try
{
    OleDbConnection conn1 = new OleDbConnection(strConnection);
    conn1.Open();

    DataTable dt = new DataTable();
    dt = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });

    Object sheetName = dt.Rows[0]["TABLE_NAME"];
    dt.Clear();
    dt.Columns.Clear();
    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + sheetName.ToString() + "]", conn1);
    da.TableMappings.Add("Table", "0");
    da.Fill(dt);
    //int idx=0;
    //int j=0;
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        string ID = dt.Rows[i][0].ToString();
        string Name = dt.Rows[i][1].ToString();
        string City = dt.Rows[i][2].ToString();
        string Marks = dt.Rows[i][3].ToString();
    }

    conn1.Close();
}
catch
{
    throw;
}

// " http://www.microsoft.com/en-us/download/confirmation.aspx?id=23734 " リンクから AccessDatabaseEngine.exe をインストールします

それは 100% 動作します

于 2013-04-30T06:59:21.563 に答える