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.

2voto

Prince Antony G Punkte 912

Wenn Sie diesen Fehler erhalten, wenn Sie versuchen, ACE aus einer ASP.NET-Anwendung zu verwenden, ist die wahrscheinlichste Ursache, dass Sie 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-Provider erfolgt, wird der 64-Bit-Prozess versuchen, eine 64-Bit-DLL zu laden. Wenn sie 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 parallel dazu installieren. Wenn Sie die 32-Bit-Version von 2010 installiert haben, müssen Sie sie deinstallieren und stattdessen die 64-Bit-Version von 2010 herunterladen und installieren. Sie können nicht gleichzeitig die 32- und 64-Bit-Versionen des 2010-Providers installiert haben. Wenn Sie die Installation auf Ihrem Entwicklungsmaschine durchführen, können Sie auch durch die Bit-Zugehörigkeit von vorhandenen Office-Installationen eingeschränkt sein.

Die zweite Option besteht darin, den Anwendungspool in IIS zu ändern, um 32-Bit-Anwendungen zu ermöglichen. Wenn Sie die vollständige Version von IIS verwenden, können Sie das Verwaltungstool verwenden, um dies zu tun (Systemsteuerung » Verwaltungstools » Internetinformationsdienste (IIS) Manager).

Für ein besseres Verständnis verweisen Sie bitte auf den folgenden Link

1voto

u8it Punkte 3472

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

2.) Stellen Sie sicher, dass Sie den richtigen Datenbank-Motor installiert haben. Diese waren die beiden Datenbank-Motoren, die mir geholfen haben.

Microsoft Access Database Engine 2010 Redistributable

2007 Office System Driver: Data Connectivity Components

3.) Es könnte ein Problem mit der Zielplattform Ihres Builds sein, die auf "Any CPU" steht. Es muss möglicherweise auf "X86" geändert werden (Eigenschaften, Build, Plattformziel).

0 Stimmen

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

0 Stimmen

Ok, nun ich denke nicht, dass es bei mir der Fall war... daher lohnt es sich immer noch zu erwähnen, dass die Zielplattform des Builds einer Person Teil des Problems sein kann.

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 hat der Kommentar - "Option von ANY CPU auf x86 geändert" - funktioniert.

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

1voto

Diego Castro Punkte 41

Du kannst auch die folgenden Schritte ausprobieren

In SQL Server, 1. Öffne eine Datenbank 2. Klicke auf die Option 'Serverobjekt' 3. Klicke auf 'Verbundene Server' 4. Klicke auf 'Anbieter' 5. Klicke mit der rechten Maustaste auf 'Microsoft.ACE.OLEDB.12.0' 6. Deaktiviere alle Optionen und schließe das Fenster

1voto

Sagar Punkte 529

Ich hatte Microsoft Access Database Engine 2010 Redistributable bereits auf meinem Computer installiert, erhielt aber immer noch den Microsoft ACE OLEDB Provider Fehler.

Dann erinnerte ich mich daran, dass ich kürzlich auf Office 2016 aktualisiert hatte, also probierte ich es erneut mit der Installation von Microsoft Access Database Engine 2010 Redistributable. Und das hat das Problem auf meinem Computer behoben.

Also, wenn Sie auf eine andere Version von MS Office aktualisiert haben oder sogar Ihr MS Office repariert/neu installiert haben, versuchen Sie es mit der erneuten Installation von Microsoft Access Database Engine 2010 Redistributable, bevor Sie Zeit damit verschwenden, andere Lösungen zu finden. 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