579 Stimmen

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

Ich versuche, Daten aus einer Excel-Datei bei einem Klick auf eine 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 nicht auf dem lokalen Rechner registriert.

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

13 Stimmen

Nur ein tangentialer Kommentar: Die Verwendung von OLEDB zum Lesen einer Excel-Datei ist alte Technologie, sehr langsam und erfordert wie von Ihnen bereits festgestellt die manuelle Installation zusätzlicher Pakete auf Ihrem Zielcomputer. (Zugegeben, die Frage wurde 2011 gestellt.) Verwenden Sie stattdessen ClosedXml (verfügbar auf NuGet), das direkt funktioniert.

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 glaubt, 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 dieselbe Fehlermeldung 'nicht auf Ihrem lokalen Computer registriert' wie der OP, sowohl für Excel 16 als auch Excel 2007 Dateiformate (oledb.16.0 und oledb.12.0 entsprechend). Es macht Sinn, an diesem Punkt die Verluste zu akzeptieren und auf die Microsoft-Software zu verzichten.

2voto

Prince Antony G Punkte 912

Wenn Sie diesen Fehler erhalten, wenn Sie versuchen, ACE von einer ASP.NET-Anwendung aus zu verwenden, ist die wahrscheinlichste Ursache, dass Sie entweder eine der 32-Bit-Versionen installiert haben. Standardmäßig führt IIS auf einem 64-Bit-Betriebssystem Anwendungen in einem 64-Bit-Workerprozess aus. 64-Bit-Prozesse können keine 32-Bit-DLLs laden. Wenn ein Aufruf an den ACE-Anbieter erfolgt, versucht der 64-Bit-Prozess, eine 64-Bit-DLL zu lokalisieren. Wenn diese nicht existiert, erhalten Sie die Fehlermeldung, die Sie hierher gebracht hat.

In diesem Fall haben Sie zwei Möglichkeiten. Erstens können Sie die 64-Bit-Version 2010 installieren. Wenn Sie die 32-Bit-Version 2007 installiert haben, können Sie einfach die 64-Bit-Version 2010 neben ihr installieren. Wenn Sie die 32-Bit-Version von 2010 installiert haben, müssen Sie sie deinstallieren und stattdessen die 64-Bit-Version 2010 herunterladen und installieren. Sie können nicht gleichzeitig die 32- und 64-Bit-Versionen des 2010-Anbieters installiert haben. Wenn Sie die Installation auf Ihrem Entwicklungsrechner durchführen, könnten Sie auch durch die Bit-Größe vorhandener Office-Installationen eingeschränkt sein.

Die zweite Option besteht darin, den Anwendungspool in IIS zu ändern, um 32-Bit-Anwendungen zu aktivieren. Wenn Sie die Vollversion von IIS verwenden, können Sie das Verwaltungstool dafür verwenden (Systemsteuerung » Verwaltungstools » Internet Information Services (IIS) Manager).

Zur besseren Verständnis verweisen Sie bitte auf folgenden Link

1voto

u8it Punkte 3472

1.) Überprüfen Sie Ihre Verbindungszeichenfolge mit ConnectionStrings.com.

2.) Stellen Sie sicher, dass Sie den richtigen Datenbankmotor installiert haben. Dies waren die beiden Datenbankmotoren, die mir geholfen haben.

Microsoft Access Database Engine 2010 Redistributable

2007 Office System Driver: Data Connectivity Components

3.) Es könnte ein Problem mit Ihrer Build-Zielplattform "Any CPU" geben. Es muss möglicherweise "X86" sein (Eigenschaften, Build, Plattformziel).

0 Stimmen

Sie können es unter JEDEM Betriebssystem ausführen, NICHT NUR unter 'x86', sondern auch als 'Any CPU' oder 'x64'. Die vollständige Antwort finden Sie unten: stackoverflow.com/a/32760211/3637582

0 Stimmen

Ok, nun, ich glaube nicht, dass das bei mir der Fall war ... deshalb lohnt es sich immer noch zu erwähnen, dass das Build-Zielplattform von jemandem Teil des Problems sein könnte.

1voto

Tee Shot Punkte 61

Ich hatte versucht, "Microsoft Access Database Engine 2010 (Englisch)" mehrmals zu deinstallieren und dann neu zu installieren, und schließlich der Kommentar - "Option von ANY CPU auf x86 geändert" und es hat funktioniert.

Danke für diesen Kommentar - ich bin jetzt nach 2 Wochen Frustration wieder im Geschäft.

1voto

Diego Castro Punkte 41

Auch diese Schritte ausprobieren

Im SQL Server, 1. Öffnen Sie eine Datenbank 2. Klicken Sie auf die Option 'Serverobjekt' 3. Klicken Sie auf 'Verknüpfte Server' 4. Klicken Sie auf 'Anbieter' 5. Klicken Sie mit der rechten Maustaste auf 'Microsoft.ACE.OLEDB.12.0' 6. Deaktivieren Sie alle Optionen und schließen Sie sie

1voto

Sagar Punkte 529

Ich hatte Microsoft Access Database Engine 2010 Redistributable bereits auf meinem Rechner installiert, bekam jedoch immer noch den Fehler mit dem Microsoft ACE OLEDB Provider.

Dann erinnerte ich mich daran, dass ich vor Kurzem auf Office 2016 umgestiegen war, also dachte ich, dass ich Microsoft Access Database Engine 2010 Redistributable vielleicht neu installieren sollte. Das hat das Problem auf meinem Rechner behoben.

Also, wenn du auf eine andere Version von MS Office umgestiegen bist oder sogar dein MS Office repariert/neu installiert hast, versuche es erst mit der Neuinstallation von Microsoft Access Database Engine 2010 Redistributable, bevor du Zeit mit der Suche nach anderen Lösungen verschwendest. Viel Glück!

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