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.

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 entwickelte Anwendungen.

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

  1. Rechts klicken Sie auf den Projektnamen.
  2. Gehen Sie zu Eigenschaften
  3. Gehen Sie auf das Registerkarte "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 gerade für mich 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 zu C:\Program Files (x86)\Common Files\microsoft shared oder C:\Program Files\Common Files\Microsoft Shared und legen Sie das Verzeichnis OFFICE14 im selben Speicherort wie Ihre Paketdatei ab.

Oder

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

0voto

Es hängt vom Büro ab, das Sie installiert haben. Wenn Sie Office x64 Bit haben, müssen Sie die Anwendung als x64 kompilieren, um sie auszuführen. Wenn Sie es auf x36 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 gebaut habe, was 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

Vergiss 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 einen Windows 7 32-Bit-Rechner mit Visual Studio 2012, der nicht über die Access-Datenbank verfügte, weil ich kein Office 2010 habe. Ich habe den gleichen Quellcode kopiert, den ich auf meinem Windows 7 64-Bit-Rechner hatte.

Also habe ich die AccessDatabaseEngine auf diesem Windows 7 32-Bit-Rechner installiert, nachdem ich sie gemäß der obigen Vorschläge von anderen hier heruntergeladen habe, und alles hat einwandfrei funktioniert.

Ich hatte immer noch das Problem auf meinem Windows 7 64-Bit-Rechner, der bereits Office 2010 hat, das bereits Access 2010 enthält. Die Art und Weise, wie ich das auf diesem Computer gelöst habe, war, dass ich in das PROJEKT gegangen bin, Eigenschaften ausgewählt habe und bei Zielplattform hatte Any CPU überprüft, bevorzugt 32-Bit. Neu kompiliert/aufgebaut und die Meldung 'Der Anbieter 'Microsoft.ACE.OLEDB.12.0' ist auf dem lokalen Computer nicht registriert' war verschwunden.

0 Stimmen

Offensichtlich wird das von mir gekaufte Büro standardmäßig für 32-Bit installiert, es sei denn, Sie kaufen Office für 64-Bit-Maschinen. Ich bin kein Experte, aber das ist meine Vermutung - ich werde mehr herausfinden, ob das stimmt. Wenn ich es mit 64-Bit voll ausnutzen will, muss ich die AccessDatabaseEngine 64-Bit-Version herunterladen, wie von anderen oben vorgeschlagen. Da ich im Moment den 32-Bit-Motor habe, musste ich meine Anwendung bevorzugen, einen 32-Bit-CPU zu verwenden.

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