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.

1voto

NetStarter Punkte 3096

Ich hatte dasselbe Problem, aber in diesem Fall war microsoft-ace-oledb-12-0-provider bereits auf meinem Computer installiert und funktionierte einwandfrei für andere entwickelte Anwendungen.

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

  1. Rechtsklick auf den Projektnamen.
  2. Gehen Sie zu Eigenschaften
  3. Gehen Sie auf das Register Web auf der rechten Seite.
  4. Unter Servern wählen Sie Local IIS 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 für mich 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 Sie... Ihre Codes funktionieren jetzt...

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

  1. Gehen Sie in C:\Program Files (x86)\Common Files\microsoft shared oder C:\Program Files\Common Files\Microsoft Shared und legen Sie das OFFICE14-Verzeichnis im gleichen Ort wie Ihre Paketdatei ab.

Oder

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

0voto

Es hängt vom Büro ab, das Sie installiert haben, wenn Sie x64-Bit-Office haben, dann müssen Sie die Anwendung als x64 kompilieren, um sie auszuführen zu lassen, also wenn Sie es auf x36 ausführen möchten, müssen Sie Office x86 installieren, um es zu akzeptieren. Ich habe alle oben genannten Lösungen ausprobiert, aber keine hat funktioniert, bis ich realisiert habe, dass ich Office x64 Bit habe, und daher habe ich die Anwendung als x64 gebaut und es hat funktioniert.

0 Stimmen

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

2 Stimmen

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

0voto

sosha Punkte 187

Denken Sie daran, 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, auf der keine Access-Datenbank installiert war, da ich kein Office 2010 habe. Ich habe dieselbe Quelle, die ich auf meiner Windows 7 64-Bit-Maschine hatte, kopiert.

Also habe ich die AccessDatabaseEngine auf dieser Windows 7 32-Bit-Maschine installiert, nachdem ich sie gemäß den oben genannten Vorschlägen von anderen hier heruntergeladen hatte, und alles hat einwandfrei funktioniert.

Ich hatte immer noch das Problem auf meinem Windows 7 64-Bit-Maschine, auf der bereits Office 2010 installiert ist, 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 Zielplattform hatte Any CPU, ich habe Prefer 32-bit ausgewählt. Neu kompiliert/aufgebaut und die Meldung "Der Provider'microsoft.ACE.OLEDB.12.0' ist nicht auf dem lokalen Computer registriert" war verschwunden.

0 Stimmen

Anscheinend wird das von mir gekaufte Office standardmäßig als 32-Bit installiert, es sei denn, Sie kaufen Office für 64-Bit-Maschinen. Ich bin kein Experte in diesem Bereich, aber das ist meine Vermutung - ich werde mehr herausfinden, ob das wahr ist. Wenn ich es mit voller Leistung von 64-Bit verwenden will, muss ich die AccessDatabaseEngine 64-Bit-Version herunterladen, wie von anderen oben vorgeschlagen. Da ich im Moment nur den 32-Bit-Motor habe, musste ich meine Anwendung bevorzugen 32-Bit-CPU.

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