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.

8voto

Sharif Lotfi Punkte 479

Machen Sie diese 2 Schritte:

  1. In diesem Menü: Projekt -> Ihre Projekteigenschaften... -> Build: "Bevorzugen Sie 32-Bit" deaktivieren
  2. Im Verbindungszeichenfolge: Setzen Sie Anführungszeichen vor und nach den erweiterten Eigenschaften, wie hier: Extended Properties='Excel 12.0 Xml;HDR=YES'

    var fileName = string.Format("{0}", openFileDialog1.FileName); var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName); var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); var ds = new DataSet();

    adapter.Fill(ds, TableNmae);

    DataTable data = ds.Tables[TableNmae]; dg1.DataSource = data;

1 Stimmen

Das Deaktivieren von "Bevorzugen von 32-Bit" hat bei mir funktioniert, während Microsoft Access Database Engine 2010 Redistributable installiert war.

1 Stimmen

Das Deaktivieren von "Bevorzuge 32-Bit" funktioniert für mich. Danke.

0 Stimmen

"Prefer 32-Bit" deaktivieren funktioniert für mich auch.

7voto

Albert Zakhia Punkte 99

Wenn Sie ein Webprojekt debuggen, stellen Sie sicher, dass IIS Express läuft, entweder in 32 oder 64 Bit, je nach den Einstellungen Ihres Projekts.

Gehen Sie zu

Tools > Optionen > Projekte und Lösungen > Webprojekte

und überprüfen Sie dort (oder deaktivieren Sie) die Option '64-Bit-Version von IIS Express verwenden...'

1 Stimmen

Wow viele Stunden andere Lösungen ausprobieren, nur deine hat es repariert! Danke

7voto

Ken Johnson Punkte 330

Ich konnte dies beheben, indem ich den Schritten in diesem Artikel gefolgt bin: http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine

Der entscheidende Punkt für mich war folgender:

Beim Debuggen mit IIS,

standardmäßig verwendet Visual Studio die 32-Bit-Version. Dies können Sie von innerhalb von Visual Studio ändern, indem Sie zu Tools » Optionen » Projekte und Lösungen » Webprojekte » Allgemein gehen und

"Verwenden Sie die 64-Bit-Version von IIS Express für Websites und Projekte" auswählen

Nachdem ich diese Option überprüft hatte, und dann die Plattformziel meines Projekts wieder auf "Alle CPU" gesetzt hatte (ich hatte es irgendwo im Fehlersuchprozess auf x86 gesetzt), konnte ich den Fehler überwinden.

1 Stimmen

Vielen Dank, die meisten anderen Antworten beziehen sich darauf, auf 32 Bit herunterzugehen, aber dies hilft Ihnen dabei, auf 64 Bit voranzukommen.

0 Stimmen

Vielen Dank, das ist genau das, wonach ich suche.

7voto

Harminder Singh Punkte 153

Eine 64-Bit-Version des 'Microsoft Access Database Engine 2010 Redistributable', die es ermöglicht, den Anbieter 'Microsoft.ACE.OLEDB.12.0' zu verwenden, steht hier zur Verfügung: http://www.microsoft.com/en-us/download/details.aspx?id=13255

Wenn VS 2012 oder neuer verwendet wird, stellen Sie sicher, dass das Kontrollkästchen "32-Bit bevorzugen" im Projekt unter Eigenschaften => Build => Allgemeine Konfiguration deaktiviert ist enter image description here

6voto

Shubham Tiwari Punkte 118

Zuerst überprüfen Sie, welche Version von microsoft.ace.oledb.12.0 auf Ihrem System installiert ist.

Überprüfen Sie im folgenden Pfad C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --64 bit ist installiert

Überprüfen Sie im folgenden Pfad C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL --x86 bit ist installiert

Wenn (x86) installiert ist, ändern Sie mit dem Konfigurationsmanager die Lösungsplattform in x86, für x64 ändern Sie auf x64.

Wenn nicht verfügbar, installieren Sie über folgenden Link

https://www.microsoft.com/en-us/download/details.aspx?id=23734

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