ボタンクリックイベントで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です。
まあ、あなたはそれをインストールする必要があります。あなたが探しています:
「Microsoft.ACE.OLEDB.12.0」プロバイダーを使用できるようにする64ビットバージョンの「Microsoft Accessデータベースエンジン2010再頒布可能パッケージ」は、こちらから入手できます。
http://www.Microsoft.com/ja-jp/download/details.aspx?id=13255
承認された回答からのダウンロードを使用する場合は、@ backtestbroker.comによって指摘されているように、x86用にビルドする必要があります。
アプリによっては(32/64ビット)あなただけのインストール可能な接続を使用して
概要:
32ビットと64ビットの両方のシェルからpowershell-command を使用してプロバイダを確認してください :
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
そしてあなたはあなたのシステムがどのプロバイダを使用できるかを見るでしょう
長い話:文字列は/で見つけることができます http://live.sysinternals.com/strings.exe
例えば。 32ビットドライバがインストールされている64ビットシステム上
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"
今後のオフィスでも2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL
あなたは文字列を見つけるでしょう
Microsoft.ACE.OLEDB
Microsoft.ACE.Oledb.12.0
office 2013にはcsi.dllも付属しています
c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
" Microsoft.ACE.OLEDB.15.0 "が含まれています。
とオフィス2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll
これは " Microsoft.ACE.OLEDB.16.0 "バージョンを持っています
最初に確認する必要があるのは、アプリケーションのビルド構成です。
x86プラットフォームでプロジェクトをビルドしたものをお持ちの場合、あなたが問題を解決するためには以下のパッケージをあなたのマシンにインストールしてください:
'Microsoft.ACE.OLEDB.12.0'プロバイダーを使用するには、最初にMicrosoft Accessデータベースエンジン2010再配布可能ファイルをインストールしてください _が必要です。このインストールは、次のサイトから入手できます。 http://www.Microsoft.com /download/en/details.aspx?id=13255 。
インストールが完了したら、あなたのアプリケーションを実行してみてください。これで問題が解決した場合は手順2に進みます。
この次のステップは、Office 2007のData Connectivity Componentsであるにもかかわらず、Office 2010で機能する、原因不明の回避策です。これが機能する理由はよくわかりませんが、機能し、ほとんどすべてのケースで機能することが証明されています。 2007 Office systemドライバをインストールする:データ接続コンポーネントが必要です。このインストールは、次のサイトから入手できます。 http://www.Microsoft.com/download/en/confirmation.aspx?id=23734 。
このインストールが完了したら、アプリケーションを実行してみてください。これで問題は解決します。
x64またはAnyCPUプラットフォームでビルドされたアプリケーションを実行しようとしている場合は、まずx86プラットフォームで正常に動作することを検証することをお勧めします。そのx86プラットフォームで実行されない場合は、最初の部分のステップを実行して、それが予想どおりに実行されることを検証してください。
私はOLEDBデータベースドライバを含むMS Accessドライバはx86プラットフォームでのみ動作し、x64またはAnyCPUプラットフォームでは互換性がないことを読みました。しかし、これは真実ではないようです。私は、x86を構築するときに自分のアプリケーションが実行されていることを検証し、次にパッシブフラグを使用してAccessデータベースエンジンをインストールしました。
これら2つのステップの後、私はx64またはAnyCPUビルド構成でビルドした後に私のアプリケーションを実行することに成功しました。これで私の問題は解決したようです。
注:ステップの順序は違いを生むように思われるので、それに従って従ってください。
Visual Studio 2010では、Configuration Managerダイアログボックスでビルドを "x86"から "Any CPU"に変更したときに、このエラー/例外が発生しました。私が理解しているこのOLEDBデータベースドライバはx86でしか動作せず、64ビット互換ではありません。ビルド設定をx86に戻すことで問題は解決しました。
私はMSドライバをインストールしましたが、それでもまだうまくいきませんでした。それから私は このブログ記事 を見つけて問題を解決しました。それをそこで読んでください、さもなければTLDR要約としてこれらの2つのイメージ(その記事からリンクされた)を使用してください:
64ビットを使用していても、AccessDatabaseEngineをインストールしても問題が解決しない場合は、 この記事 を参照してください。これで問題は解決しました。
つまり、 this AccessDatabaseEngine をインストールする必要があります。
まだこれの影響を受けているすべての人のために。
私はエラーを受けています...
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
最初に64bitバージョンをインストールし、次にこのページから32bitバージョンのAccessDatabaseEngine.exeをインストールしてみました http://www.Microsoft.com/ja-jp/download /details.aspx?id=13255
それでも喜びはありません。
私はそれから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. 15 。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のバージョンを確認して適切なバージョン番号を使用できるようになります。
私はこの記事の手順に従ってこれを修正することができました: http://www.mikesdotnetting.com/article/280/solved-the-Microsoft-ace-oledb-12-0-provider-is-not-ローカルマシンに登録
私にとっての要点はこれでした:
IISでデバッグするとき
デフォルトでは、Visual Studioは32ビットバージョンを使用します。これはVisual Studio内から変更するには、ツール→オプション→プロジェクトとソリューション→Webプロジェクト→一般の順に選択して選択します。
"Webサイトやプロジェクトには64ビットバージョンのIIS Expressを使用する"
そのオプションをチェックし、それから私のプロジェクトのプラットフォームターゲットを "Any CPU"(トラブルシューティングプロセスのどこかでx86に設定していた)に戻すと、私はエラーを克服することができた。
それでもインストールされた "AccessDatabaseEngine"が解決しない場合は、以下の解決策があります。
Active Solution Platformを "Any CPU"から "x86"に変更する必要があります。
CodeProject.comから
最初に、ご使用のシステムにどのバージョンのMicrosoft.ace.oledb.12.0がインストールされているかを確認してください。
パスC:¥Program Files¥Common Files¥Microsoft Shared¥OFFICE14¥ACEOLEDB.DLL - 64 bitがインストールされています。
パスC:¥Program Files(x86)¥Common Files¥Microsoft Shared¥OFFICE14¥ACEOLEDB.DLL - x 86 bitがインストールされているパスでチェックイン
(x86)がインストールされている場合は、Configuration Managerを使用してソリューションプラットフォームをx86に変更し、x64をx64に変更します。
利用できない場合は、以下のリンクを使用してインストールしてください
https://www.Microsoft.com/ja-jp/download/details.aspx?id=23734
Webプロジェクトをデバッグしている場合は、プロジェクト設定に応じて IIS Express が32ビットまたは64ビットで実行されていることを確認してください。
後藤
ツール>オプション>プロジェクトとソリューション> Webプロジェクト
そしてそこから 'Use 64 bit version _ IIS Express ...をチェック(またはチェック解除)します。
SSMS 2014を使用してExcelファイル(xlsx)からSQL Server DBにデータをインポートしようとしたときにこの問題が発生しました。
2007 Office System Driver:Data Connectivity Components installが私にとってトリックでした。
syp_dino、
あなたが "Microsoft.ACE.OLEDB.12.0 'プロバイダーのために提案したように私のための解決策はローカルマシンに登録されていません エラーはActive Solution Platformを" Any CPU "から" x86 "に変更することです。
私がこれらのステップを実行し、ソリューションを再構築し、EXEをつかみ、そしてネットワーク上に置いたとき、すべてがWindows 7 64ビットマシン上でスムーズに働いた。
私はこれと同じ問題に直面しました。 Solution Propertiesに行き、Any CPUをx86に変更してください。
次のAccess DBエンジン(X86またはX64:お使いのマシンの設定に応じて)をダウンロードしてインストールし、魔法を見てください:)
https://www.Microsoft.com/ja-jp/download/confirmation.aspx?id=13255
Excelファイルを読んでいるときにも同様の問題があります。
問題の歴史:
メモリ要件のため、最近アプリケーションを32ビットから64ビットに移行しました。そのために私達は私達の窓7を32ビットから64ビットに移行しました。それでも私たちのマシンに32ビットのOfficeをインストールしました。
これは、Excelデータをアプリケーションにインポートする際にこの問題が発生したためです。
溶液、
64ビット版の http://www.Microsoft.com/en-us/download/details.aspx?id=13255 をダウンロードし、引数を付けてインストールしました。
AccessDatabaseEngine_x64.exe /パッシブ
コードを変更しなくても問題は解決します。
注意:
64ビットOSおよび64ビットオフィスでは、この修正をしなくても私の機能は正常に機能していました。この修正は、32ビット版のOfficeがインストールされている64ビット版OSで64ビット版アプリケーションが実行されている場合にのみ必要です。
私は他の人の指示に従った。このパッチをインストールし、そのパッチとMicrosoft Access Database Engine 2010をインストールします。
私の問題は、私は自分のマシンの2つのサイトで同じライブラリ(linq2sql)を使用しているということでした。 1が動作し、1が動作しません。
結局、私は仕事をしていないサイトのためにapppoolの詳細設定で "32ビットアプリケーションを有効にする"必要があることに気づきました。
すべてうまくいった。
これは私にとって今うまくいきました。
しかし、あなたのアプリケーションパッケージのためにあなたは以下の解決策を使うことができます:
または
Webアプリケーションのサーバーに AccessDatabaseEngine をインストールすることを忘れないでください。
Microsoft Accessデータベースエンジン2010再配布可能 は既に自分のマシンにインストールされていましたが、まだ Microsoft ACE OLEDB Provider エラーを受け取っていました。
それから私は私が最近Office 2016にアップグレードしたことを思い出したので、私は Microsoft Accessデータベースエンジン2010再配布可能 を再インストールしてみるべきでしょうか。そしてそれは私のマシン上の問題を修正しました。
そのため、MS Officeの異なるバージョンにアップグレードした、またはMS Officeを修復/再インストールした場合は、他の修正を見つけることに時間を浪費する前に Microsoft Accessデータベースエンジン2010再配布可能 を再インストールしてください。がんばろう!
次の2つの手順を実行します。1.このメニューで:project - > yourproject properties ... - > Build:「prefer 32-bit」のチェックマークを外します。 Excel 12.0 Xml; HDR = YES '
var fileName = string.Format("{0}", openFileDialog1.FileName);
//var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, TableNmae);
DataTable data = ds.Tables[TableNmae];
dg1.DataSource = data;
ASP.NETアプリケーションからACEを使用しようとしたときにこのエラーが発生した場合、最も可能性の高い原因は32ビットバージョンのいずれかをインストールしたことです。デフォルトでは、64ビットオペレーティングシステムのIISは、64ビットワーカープロセスでアプリケーションを実行します。 64ビットプロセスは32ビットDLLをロードできません。 ACEプロバイダへの呼び出しが行われると、64ビットプロセスは64ビットDLLを見つけようとします。それが存在しない場合は、ここにあなたをもたらしたエラーメッセージが表示されます。
この場合、2つの選択肢があります。まず、2010 64ビット版をインストールできます。 2007 32ビット版をインストールしている場合は、それと並行して2010 64ビット版をインストールするだけです。 32ビット版の2010がインストールされている場合は、それをアンインストールして代わりに64ビット版の2010をダウンロードしてインストールする必要があります。 32ビット版と64ビット版の2010年プロバイダーを同時にインストールすることはできません。開発用コンピュータでインストールを実行している場合は、既存のOfficeインストールの煩雑さによっても制約を受ける可能性があります。
2番目のオプションは、32ビットアプリケーションを有効にするためにIISのアプリケーションプールを変更することです。フルバージョンのIISを使用している場合は、管理ツールを使用してこれを実行できます(コントロールパネル→管理ツール→インターネットインフォメーションサービス(IIS)マネージャ)。
より多くの理解のために以下を参照してください リンク
1.) ConnectionStrings.com で接続文字列を確認します。
2.)正しいデータベースエンジンがインストールされていることを確認してください。これらは私を助けた2つのデータベースエンジンでした。
Microsoft Accessデータベースエンジン2010の再配布可能
2007 Office System Driver:データ接続コンポーネント
3.)ビルドターゲットプラットフォームが "Any CPU"の場合は問題があるかもしれません。 "X86"(Properties、Build、Platform Target)である必要があります。
またこれらのステップを試みることができます
SQL Serverで、1つのデータベースを開きます。2.オプション「Server Obtect」をクリックします。3.「リンクサーバー」をクリックします。4.「プロバイダ」をクリックします。 6.すべてのオプションのチェックを外して閉じます
私は同じ問題を抱えていたが、この場合 Microsoft-ace-oledb-12-0-provider はすでに私のマシンにインストールされており、開発された他のアプリケーションのためにうまく働いていた。
これらのアプリケーションと私が問題を抱えているアプリケーションの違いは、古いアプリケーションが " Local IIS "で実行されていたのに対し、エラーのあるアプリケーションは " IISで実行されていた_ Express (Visual Studioから実行している ")。だから私がやったのは
- プロジェクト名を右クリック。
- プロパティへ
- 右側のWebタブに移動します。
- Serversの下でLocal IISを選択し、Create Virtual Directoryボタンをクリックします。
- アプリケーションをもう一度実行するとうまくいきました。
多くの回答が寄せられていますが、私が遭遇した問題はまだ言及されていません。
32ビットインストーラーのインストール AccessDatabaseEngine.exe はMSからダウンロードした場合、成功を報告しますが、上記のいずれかの投稿のPowershellスクリプトで検証されたようにインストールされません。
64ビットインストーラーのインストール AccessDatabaseEngine_X64.exe から、衝撃的なエラーメッセージが報告されました。
非常に単純な解決策がオートデスクのサイトで here で見つかりました。次のように、パラメータ/ passiveをコマンドライン文字列に追加するだけです。
AccessDatabaseEngine_X64.exe /パッシブ
インストールは成功しました、OleDbドライバは動きました。
OleDbで処理しているExcelファイルはxlsxタイプで、EPPlus 4.5で作成され、Excel 2007で修正されています。
私が別のコンピュータでそれを解決した方法:
私は、Office 2010を持っていないので、Accessデータベースを持っていなかったVisual Studio 2012が付いているWindows 7 32ビットマシンを持っています。
だから、私はここから他の人からの提案に従ってそれをダウンロードした後、私はこのWindows 7 32ビットマシンにAccessDatabaseEngineをインストールし、そしてすべてがうまくいった。
私はまだAccess 2010を既に含んでいるOffice 2010を既に持っている私のWindows 7 64ビットマシンで問題を抱えていました。このコンピュータで解決した方法はPROJECTに入ることでした。 32ビット再コンパイル/ビルドし、Microsoft.ACE.OLEDB.12.0 'プロバイダーがローカルマシンに登録されていないというメッセージが消えました。
それはあなたがそれを実行できるようにするためにx64としてアプリケーションをコンパイルする必要があります、それであなたがそれをx36上で実行したいならあなたが受け入れるためにオフィスx86をインストールする必要が上記のすべての解決策が、私は私がオフィスx64bitを持っていたことに気付いたときまでどれもうまくいきませんでした。
ExcelファイルからMS-SQLにデータをインポートすると、このエラーが発生しました。プロバイダはすでにインストールされていて(64ビット)、なぜうまく動かなかったのか私は驚きました。だから私がしたのは、ここで使用されているインポート/エクスポートアプリケーション、つまり.EXEを見つけることだけでした。そして私はそれを見つけました
C:¥Program Files¥Microsoft SQL Server¥130¥DTS¥Binn¥DTSWizard.exe
その後、データのインポートを実行するために直接.exeを実行しました。そしてそれはうまくいった!