579 Stimmen

'Der Anbieter 'Microsoft.ACE.OLEDB.12.0' ist auf dem lokalen Computer nicht registriert'

Ich versuche, Daten aus einer Excel-Datei bei einem Klick auf die Schaltfläche zu erhalten. Mein Verbindungszeichenfolge lautet:

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

Wenn ich auf die Schaltfläche klicke, erhalte ich den folgenden Fehler:

Der Anbieter 'Microsoft.ACE.OLEDB.12.0' ist auf dem lokalen Computer nicht registriert.

Ich habe keinen Schimmer, wie ich das beheben kann. Mein Betriebssystem ist Windows 7.

13 Stimmen

Nur ein kommentar: Die Verwendung von OLEDB zum Lesen einer Excel-Datei ist veraltete Technologie, sehr langsam und wie Sie festgestellt haben, erfordert die manuelle Installation zusätzlicher Pakete auf Ihrem Zielsystem. (Zugegeben, die Frage wurde 2011 gestellt.) Es ist besser, ClosedXml (verfügbar auf NuGet) zu verwenden, das sofort einsatzbereit ist.

7 Stimmen

@ShaulBehr Es wäre schön gewesen, aber ClosedXml funktioniert nur für .xlsx-Dateien, nicht für .xls.

7 Stimmen

Wenn Sie in Sql Server importieren, können Sie diese Abfrage von Ssms ausführen: execute master.dbo.xp_enum_oledb_providers Es wird Ihnen sagen, welche Anbieter es denkt, dass Sie haben. Es hat mir gesagt, dass ich sowohl Microsoft.ACE.OLEDB.16.0 als auch Microsoft.ACE.OLEDB.12.0 hatte, aber als ich versuchte, Daten zu importieren, bekam ich dasselbe 'nicht auf Ihrem lokalen Rechner registriert' wie der OP, sowohl für Excel 16 als auch für Excel 2007 Dateiformate (oledb.16.0 und oledb.12.0 jeweils). Es macht Sinn, an diesem Punkt den Verlust abzuschneiden und sich von der Microsoft-Software zu verabschieden.

6voto

syp_dino Punkte 395

Wenn der installierte "AccessDatabaseEngine" immer noch nicht hilft, ist unten die Lösung:

Sie müssen die aktive Lösungsplattform von "Any CPU" auf "x86" ändern.

OLEDB-Anbieter ist nicht auf dem lokalen Rechner registriert

Von CodeProject.com

0 Stimmen

Du kannst es unter jeder Plattform ausführen, NICHT NUR 'x86', sondern auch als 'Any CPU' und als 'x64' ebenfalls. Siehe vollständige Antwort unten: stackoverflow.com/a/32760211/3637582

5voto

Md Shahriar Punkte 1266

Ich stand vor dem gleichen Problem. Gehen Sie zu den Lösungseigenschaften und ändern Sie Any CPU auf x86, ich denke, das wird die Arbeit erledigen.

5voto

Kevin Punkte 1316

Diese Konfigurationen funktionierten im Januar 2020 auf meinem neuen Maschinenbuild:

(1 - nur x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installiert mit /passive Argument, VStudio-Baukonfigurationen explizit auf x64 eingestellt, mit folgender Verbindungszeichenfolge: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MyDatabase.accdb

(2 - x64 oder x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installiert mit /passive Argument, ZUSÄTZLICH AccessDatabaseEngine 2010 (32-Bit) installiert mit /passive Argument, VStudio-Baukonfigurationen auf AnyCPU eingestellt, mit folgender Verbindungszeichenfolge: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MyDatabase.accdb

(3 - nur x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32-Bit) installiert mit /passive Argument, VStudio-Baukonfigurationen auf x86 eingestellt, mit folgender Verbindungszeichenfolge: Provider= Microsoft.ACE.OLEDB.12.0; Data Source=D:...\MyDatabase.accdb

FEHLERHAFTE NOTIZEN

Die Verwendung des ACE.OLEDB.12.0 x64-Providers in der Verbindungszeichenfolge schlug fehl, wenn nur AccessDatabaseEngine_x64 2016 wie in (1) oben installiert war.

Die Verwendung von AnyCPU in den Visual Studio-Baukonfigurationen scheiterte in (1). Die Einstellung auf x64 ist erforderlich. Möglicherweise liegt das daran, dass AnyCPU bedeutet, dass Vstudio zur Kompilierzeit einen x32 ACE.OLEDB.nn.0-Provider sehen muss.

Der ACE.OLEDB.12.0 2016 x32 /passive Engine ließ sich nicht installieren, wenn er x64-Anwendungen sah. (Der ACE.OLEDB.12.0 2010 x32 /passive Installer funktionierte.)

SCHLUSSFOLGERUNGEN

Um x64-Baukonfigurationen zu verwenden, benötigen Sie den 2016 x64-Datenbankengine UND den ACE.OLEDB.16.0 Verbindungszeichenfolgen-Provider UND explizite x64-Baukonfigurationen, um mit Office 365 im Januar 2020 zu arbeiten. Die Verwendung der Option /passive erleichtert die Installationen. Dank an denjenigen, der diesen Tipp gepostet hat!

Um AnyCPU zu verwenden, musste ich sowohl den ACE.OLEDB.12.0 2010 x32-Engine als auch die ACE.OLEDB.16.0 x64-Engines installiert haben. Auf diese Weise konnte Vstudio zur "AnyCPU"-Kompilierzeit sowohl x32- als auch x64-Engines sehen. Ich konnte die Verbindungszeichenfolge des Providers auf ACE.OLEDB.12.0 für den Betrieb mit x32 oder auf ACE.OLEDB.16.0 für den Betrieb mit x64 ändern. Beide funktionierten einwandfrei.

Um x86-Baukonfigurationen zu verwenden, benötigen Sie den 2010 x32-Datenbankengine UND den ACE.OLEDB.12.0 Verbindungszeichenfolgen-Provider UND explizite x86-Baukonfigurationen, um mit Office 365 x32 im Januar 2020 zu arbeiten.

5voto

Sevron Ghee Punkte 49

Syp_dino,

Die Lösung für mich, wie von dir vorgeschlagen für den Fehler "Der 'Microsoft.ACE.OLEDB.12.0' Anbieter ist auf dem lokalen Computer nicht registriert" ist, die aktive Lösungsplattform von "Any CPU" auf "x86" zu ändern.

Als ich diese Schritte ausgeführt, die Lösung erneut erstellt habe, die EXE-Datei genommen und auf das Netzwerk gelegt habe, hat alles reibungslos auf dem Windows 7 64-Bit-Rechner funktioniert.

0 Stimmen

Sie können es unter jeder Plattform ausführen, NICHT NUR x86, sondern auch als Any CPU. Siehe meine Antwort unten: stackoverflow.com/a/32760211/3637582

3voto

Alexander S. Punkte 1214

für Visual Studio 2022 (und neuer)

Ich hatte diesen Fehler jedes Mal und es half nichts. VS2019 war die Lösung.

https://learn.microsoft.com/en-us/visualstudio/data-tools/accessing-data-in-visual-studio?view=vs-2022#data-providers

Wenn Sie Visual Studio 2022 zum Verbinden mit Datenbanken verwenden, müssen Sie beachten, dass Visual Studio 2022 ein 64-Bit-Prozess ist. Dies bedeutet, dass einige der Datentools in Visual Studio nicht in der Lage sein werden, Verbindungen mit OLEDB- oder ODBC-Datenbanken unter Verwendung von 32-Bit-Datenanbietern herzustellen.

Wenn Sie 32-Bit-Anwendungen pflegen müssen, die mit OLEDB- oder ODBC-Datenbanken verbunden sind, können Sie die Anwendung immer noch mit Visual Studio 2022 erstellen und ausführen. Wenn Sie jedoch eines der Visual Studio-Datentools wie Server-Explorer, den Datenträger-Assistenten oder den DataSet-Designer verwenden müssen, müssen Sie eine frühere Version von Visual Studio verwenden, die immer noch ein 32-Bit-Prozess ist. Die letzte Version von Visual Studio, die ein 32-Bit-Prozess war, war Visual Studio 2019.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X