579 Stimmen

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

Ich versuche, Daten aus einer Excel-Datei bei einem Klickereignis auf eine Schaltfläche zu erhalten. Mein Verbindungszeichenfolge ist:

 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 soll. Mein Betriebssystem ist Windows 7.

13 Stimmen

Nur ein kurzer Kommentar: Die Verwendung von OLEDB zum Lesen einer Excel-Datei ist veraltete Technologie, sehr langsam und wie Sie festgestellt haben, erfordert das manuelle Installation von zusätzlichen Paketen auf Ihrem Zielrechner. (Zugegeben, die Frage wurde 2011 gestellt.) Verwenden Sie stattdessen ClosedXml (verfügbar auf NuGet), das sofort einsatzbereit ist.

7 Stimmen

@ShaulBehr 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, die Sie haben. 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, bekam ich dasselbe 'nicht auf Ihrem lokalen Rechner registriert', wie der OP, für beide Excel 16 und Excel 2007-Dateiformate (oledb.16.0 und oledb.12.0 entsprechend). Es macht Sinn, an diesem Punkt Ihre Verluste zu akzeptieren und auf die Microsoft-Software zu verzichten.

1voto

NetStarter Punkte 3096

Ich hatte das gleiche Problem, aber in diesem Fall war Microsoft-Ace-Oledb-12-0-Provider bereits auf meinem Computer installiert und funktionierte einwandfrei für andere Anwendungen, die entwickelt wurden.

Der Unterschied zwischen diesen Anwendungen und derjenigen, bei der ich das Problem hatte, war, dass die alten Anwendungen auf "Local IIS" liefen, während diejenige mit dem Fehler auf "IIS Express (aus Visual Studio gestartet) lief. Also habe ich folgendes gemacht -

  1. Rechtsklick auf den Projektnamen.
  2. Gehen Sie zu Eigenschaften.
  3. Gehen Sie auf den Tab Web auf der rechten Seite.
  4. Wählen Sie unter Servern Local IIS aus und klicken Sie auf die Schaltfläche Virtuelles Verzeichnis erstellen.
  5. Führen Sie die Anwendung erneut aus und es hat funktioniert.

0voto

Dies hat bei mir gerade funktioniert.

  1. Besuchen Sie diese Seite und laden Sie das entsprechende Paket für Ihren Computer herunter (AccessDatabaseEngine.exe oder AccessDatabaseEngine_X64.exe)
  2. Installieren Sie das.
  3. Genießen... Ihre Codes funktionieren jetzt...

Aber für Ihr Anwendungspaket können Sie eine der folgenden Lösungen verwenden:

  1. Gehen Sie zu C:\Program Files (x86)\Common Files\microsoft shared oder C:\Program Files\Common Files\Microsoft Shared und platzieren Sie das Verzeichnis OFFICE14 im selben Verzeichnis wie Ihre Paketdatei.

Oder

  1. Fügen Sie zwei Projekte (in Schritt 1) zu Ihrem Installationspaket hinzu.

0voto

Es hängt vom Büro ab, das Sie installiert haben. Wenn Sie ein x64-Bit-Büro haben, müssen Sie die Anwendung als x64 kompilieren, um sie ausführen zu können. Wenn Sie sie also auf x86 ausführen möchten, müssen Sie Office x86 installieren. Ich habe alle oben genannten Lösungen ausprobiert, aber keine hat funktioniert, bis ich bemerkte, dass ich Office x64-Bit hatte und die Anwendung als x64 erstellt habe und es funktioniert hat.

0 Stimmen

Falsch, ich habe Office installiert und musste den DB Connector trotzdem installieren.

2 Stimmen

Das löst mein Problem, wenn KEINES der oben genannten für mich funktioniert!

0voto

sosha Punkte 187

Vergessen Sie nicht, AccessDatabaseEngine auf dem Server für die Webanwendung zu installieren.

0voto

Humbert Punkte 41

Der Weg, wie ich es auf verschiedenen Computern gelöst habe:

Ich habe eine Windows 7 32-Bit-Maschine mit Visual Studio 2012, die keine Access-Datenbank hatte, weil ich kein Office 2010 habe. Ich habe den gleichen Quellcode kopiert, den ich auf meiner Windows 7 64-Bit-Maschine hatte.

Also habe ich die AccessDatabaseEngine in diese Windows 7 32-Bit-Maschine installiert, nachdem ich sie gemäß den obigen Vorschlägen von anderen hier heruntergeladen habe, und alles hat gut funktioniert.

Ich hatte immer noch das Problem auf meinem Windows 7 64-Bit-Maschine, die bereits Office 2010 hat, das bereits Access 2010 enthält. Der Weg, wie ich es auf diesem Computer gelöst habe, war, dass ich in das PROJEKT gegangen bin, Eigenschaften ausgewählt habe, und bei Platform Target Any CPU hatte ich "Prefer 32-Bit" angeklickt. Neu kompiliert/aufgebaut und die Meldung 'Der Microsoft.ACE.OLEDB.12.0'-Anbieter ist auf dem lokalen Computer nicht registriert' war verschwunden.

0 Stimmen

Scheinbar wird das von mir gekaufte Office standardmäßig für 32-Bit installiert, es sei denn, Sie kaufen Office für 64-Bit-Maschinen, ich bin kein Experte darin, aber das ist meine Vermutung - ich werde mehr herausfinden, ob dies stimmt. Wenn ich es mit der vollen Leistung von 64 Bit nutzen möchte, muss ich die AccessDatabaseEngine 64-Bit-Version herunterladen, wie oben von anderen vorgeschlagen. Im Moment musste ich mein Anwendung bevorzugen 32-Bit-CPU, da ich bisher nur die 32-Bit-Engine hatte.

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