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 eine Schaltfläche zu erhalten. Meine 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 Rechner nicht registriert.

Ich habe keine Ahnung, wie ich das beheben kann. Mein Betriebssystem ist Windows 7.

13 Stimmen

Nur ein tangentiales Kommentar: Die Verwendung von OLEDB zum Lesen einer Excel-Datei ist eine veraltete Technologie, sehr langsam und wie Sie festgestellt haben, erfordert sie die manuelle Installation zusätzlicher Pakete auf Ihrer Zielmaschine. (Zugegeben, die Frage wurde 2011 gestellt.) Verwenden Sie stattdessen ClosedXml (verfügbar auf NuGet), 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 Daten 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 Ihrer Meinung nach gibt. Es hat mir gesagt, dass ich sowohl Microsoft.ACE.OLEDB.16.0 als auch Microsoft.ACE.OLEDB.12.0 habe, aber als ich versuchte, Daten zu importieren, erhielt ich die gleiche Fehlermeldung 'nicht auf Ihrem lokalen Computer registriert' wie der OP, für beide Excel 16 und Excel 2007 Dateiformate (oledb.16.0 und oledb.12.0 jeweils). Es ergibt Sinn, an diesem Punkt die Verluste zu akzeptieren und auf die Microsoft-Software zu verzichten.

6voto

syp_dino Punkte 395

Wenn das installierte "AccessDatabaseEngine" immer noch nicht hilft, ist hier die Lösung:

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

OLEDB Provider ist nicht auf dem lokalen Rechner registriert

Von CodeProject.com

0 Stimmen

Sie können es unter jeder Plattform ausführen, NICHT NUR 'x86', sondern auch als 'Any CPU' oder 'x64'. 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 den Job erledigen.

5voto

Kevin Punkte 1316

Diese Konfigurationen haben im Januar 2020 auf meinem neuen Maschinen-Build funktioniert:

(1 - nur x64) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installiert mit dem /passive Argument, VStudio Build-Einstellungen explizit auf x64 gesetzt, mit folgendem Verbindungsstring: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MeineDatenbank.accdb

(2 - x64 oder x32) Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016 installiert mit dem /passive Argument, ZUSÄTZLICH AccessDatabaseEngine 2010 (32bit) installiert mit dem /passive Argument, VStudio Build-Einstellungen auf AnyCPU gesetzt, mit folgendem Verbindungsstring: Provider= Microsoft.ACE.OLEDB.16.0; Data Source=D:...\MeineDatenbank.accdb

(3 - nur x32) Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32bit) installiert mit dem /passive Argument, VStudio Build-Einstellungen auf x86 gesetzt, mit folgendem Verbindungsstring: Provider= Microsoft.ACE.OLEDB.12.0; Data Source=D:...\MeineDatenbank.accdb

FEHLERNOTIZEN

Die Verwendung des ACE.OLEDB.12.0 x64 Providers im Verbindungsstring ist fehlgeschlagen, wenn nur das AccessDatabaseEngine_x64 2016 wie oben in (1) installiert war.

Die Verwendung von AnyCPU in den Visual Studio Build-Einstellungen ist in (1) fehlgeschlagen. Die Einstellung x64 ist erforderlich. Vielleicht 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 Motor würde nicht installieren, wenn er x64 Anwendungen sah. (Der ACE.OLEDB.12.0 2010 x32 /passive Installer hat funktioniert.)

SCHLUSSFOLGERUNGEN

Um x64 Build-Einstellungen zu verwenden, benötigen Sie den 2016 x64 Datenbankmotor UND den ACE.OLEDB.16.0 Verbindungs-String-Provider UND explizite x64 Build-Einstellungen, um mit Office 365 im Januar 2020 zu arbeiten. Die Verwendung der /passive Option vereinfacht die Installation. Ein Dank an denjenigen, der diesen Tipp gepostet hat!

Um AnyCPU zu verwenden, musste ich sowohl den ACE.OLEDB.12.0 2010 x32 Motor als auch die ACE.OLEDB.16.0 x64 Motoren installiert haben. Auf diese Weise konnte Vstudio sowohl x32 als auch x64 Motoren zur "AnyCPU" Kompilierzeit sehen. Ich konnte den Anbieter-Verbindungsstring auf ACE.OLEDB.12.0 für den x32 Betrieb ändern oder auf ACE.OLEDB.16.0 für den x64 Betrieb. Beides funktionierte einwandfrei.

Um x86 Build-Einstellungen zu verwenden, benötigen Sie den 2010 x32 Datenbankmotor UND den ACE.OLEDB.12.0 Verbindungs-String-Provider UND explizite x86 Build-Einstellungen, 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 Ihnen vorgeschlagen für den Fehler "Microsoft.ACE.OLEDB.12.0' Provider ist auf dem lokalen Rechner nicht registriert" ist, die aktive Lösungsplattform von "Any CPU" auf "x86" zu ändern.

Als ich diese Schritte durchgeführt habe, die Lösung neu erstellt habe, die EXE geholt und auf das Netzwerk gelegt habe, hat alles reibungslos auf der Windows 7 64-Bit-Maschine funktioniert.

0 Stimmen

Sie können es unter jeder Plattform ausführen, NICHT NUR x86, sondern auch als Any CPU. Sehen Sie 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 hat nichts geholfen. VS2019 war die Lösung.

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

Wenn Sie Visual Studio 2022 verwenden, um eine Verbindung zu Datenbanken herzustellen, müssen Sie sich darüber im Klaren sein, dass Visual Studio 2022 ein 64-Bit-Prozess ist. Dies bedeutet, dass einige der Datentools in Visual Studio keine Verbindung zu OLEDB- oder ODBC-Datenbanken über 32-Bit-Datenanbieter herstellen können.

Wenn Sie 32-Bit-Anwendungen pflegen müssen, die eine Verbindung zu OLEDB- oder ODBC-Datenbanken herstellen, können Sie die Anwendung weiterhin mit Visual Studio 2022 erstellen und ausführen. Wenn Sie jedoch eines der Visual Studio-Datentools wie den Server-Explorer, den Datendienst-Assistenten oder den DataSet-Designer verwenden müssen, müssen Sie eine frühere Version von Visual Studio verwenden, die weiterhin 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