Ich versuche, Daten aus einer Excel-Datei bei einem Tastenklick-Ereignis abzurufen. 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, wird folgende Fehlermeldung angezeigt:
Der Anbieter "Microsoft.ACE.OLEDB.12.0" ist nicht auf dem lokalen Computer registriert.
Ich habe keine Ahnung, wie ich das beheben soll. Mein Betriebssystem ist Windows 7.
Nun, Sie müssen es installieren. Du schaust nach:
Eine 64-Bit-Version von "Microsoft Access Database Engine 2010 Redistributable", mit der Sie den Anbieter "Microsoft.ACE.OLEDB.12.0" verwenden können, finden Sie hier:
http://www.Microsoft.com/en-us/download/details.aspx?id=13255
Wenn Sie den Download von der akzeptierten Antwort verwenden, müssen Sie für x86 bauen, wie von @ backtestbroker.com ausgeführt.
je nach app (32/64bit) könnte man die verbindung einfach installieren
Zusammenfassung:
überprüfe deine Provider mit dem Powershell-Befehl von der 32- und 64-Bit-Shell :
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
und Sie werden sehen, welchen Anbieter Ihr System verwenden kann
die lange Geschichte: Die Zeichenfolgen finden Sie mit http://live.sysinternals.com/strings.exe
z.B. Auf einem 64-Bit-System mit 32-Bit-Treibern
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"
auch im kommenden Büro 2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL
sie werden die Saiten finden
Microsoft.ACE.OLEDB
Microsoft.ACE.Oledb.12.0
das Office 2013 kommt auch mit csi.dll
c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
welches das " Microsoft.ACE.OLEDB.15.0 " enthält
und Büro 2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll
welches die " Microsoft.ACE.OLEDB.16.0 " Version hat
Das erste, was Sie überprüfen müssen, ist Ihre Build-Konfiguration Ihrer Anwendung.
Wenn Sie Ihr Projekt unter x86-Plattform erstellt haben, sollten Sie zur Behebung des Problems die folgenden Pakete auf Ihrem Computer installieren:
Um den Provider "Microsoft.ACE.OLEDB.12.0" zu verwenden, müssen Sie Microsoft Access Database Engine 2010 Redistributable installieren zuerst ist diese Installation unter folgender Adresse verfügbar: http: // www. Microsoft.com/download/en/details.aspx?id=13255 .
Versuchen Sie nach Abschluss der Installation, Ihre Anwendung auszuführen. Wenn das Problem dadurch behoben wird, fahren Sie mit Schritt 2 fort.
Bei diesem nächsten Schritt handelt es sich um eine ungeklärte Problemumgehung, die für Office 2010 funktioniert, obwohl es sich um die Datenverbindungskomponenten von Office 2007 handelt. Ich bin nicht ganz sicher, warum dies funktioniert, aber es funktioniert und es hat sich in fast allen Fällen bewährt. Sie müssen den 2007 Office System-Treiber installieren: Data Connectivity Components, diese Installation ist verfügbar unter: http://www.Microsoft.com/download/en/confirmation.aspx?id 23734) ==.
Versuchen Sie nach Abschluss dieser Installation, Ihre Anwendung auszuführen. Dadurch sollte das Problem behoben sein.
Wenn Sie versuchen, eine Anwendung, die unter x64 oder einer AnyCPU-Plattform erstellt wurde auszuführen, würde ich empfehlen, zunächst zu überprüfen, ob sie unter der x86-Plattform wie erwartet ausgeführt wird. Führen Sie für den Fall, dass es nicht unter dieser x86-Plattform ausgeführt wird, die Schritte im ersten Teil aus und überprüfen Sie, ob es wie erwartet ausgeführt wird.
Ich habe gelesen, dass die MS Access-Treiber einschließlich des OLEDB-Datenbanktreibers nur unter der x86-Plattform funktionieren und unter der x64- oder AnyCPU-Plattform nicht kompatibel sind. Aber das scheint nicht wahr zu sein. Ich habe überprüft, ob meine Anwendung beim Erstellen von x86 ausgeführt wurde, und dann das Access-Datenbankmodul mit dem passiven Flag installiert.
Nach diesen zwei Schritten konnte ich meine Anwendung ausführen, nachdem ich eine x64- oder AnyCPU-Build-Konfiguration erstellt hatte. Dies schien mein Problem zu lösen.
Hinweis: Die Reihenfolge der Schritte scheint einen Unterschied zu machen. Befolgen Sie die entsprechenden Anweisungen.
Ich habe diesen Fehler/diese Ausnahme in Visual Studio 2010 erhalten, als ich meinen Build im Configuration Manager-Dialogfeld von "x86" in "Beliebige CPU" geändert habe. Dieser OLEDB-Datenbanktreiber funktioniert meines Wissens nur in x86 und ist nicht 64-Bit-kompatibel. Das Ändern der Build-Konfiguration auf x86 löste das Problem für mich.
Ich habe die MS-Treiber installiert und es hat bei mir immer noch nicht funktioniert. Dann fand ich diesen Blog-Beitrag , der das Problem löste. Lesen Sie es dort, oder verwenden Sie diese beiden Bilder (von diesem Beitrag verlinkt) als TLDR-Zusammenfassung:
Wenn Sie 64-Bit verwenden, aber auch nach der Installation von AccessDatabaseEngine noch Probleme haben, lesen Sie diesen Beitrag , dann hat sich das Problem für mich gelöst.
sie müssen this AccessDatabaseEngine installieren
Für alle, die noch davon betroffen sind.
Ich habe den Fehler bekommen ...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
... wie vom OP, Shailesh Sahu, beschrieben.
Ich habe 64bit Windows 7.
Mein Problem liegt innerhalb von PowerShell - Skripten, es wird jedoch eine Verbindungszeichenfolge verwendet, die dem Post des OP ähnelt. Hoffentlich können meine Ergebnisse auf C #, PowerShell und jede andere Sprache angewendet werden, die auf dem basiert Treiber "Microsoft.ACE.OLEDB".
Ich habe die Anweisungen in diesem MS-Forenthread befolgt: http://goo.gl/h73RmI
Ich habe zuerst versucht, die 64-Bit -Version und dann die 32-Bit -Version der AccessDatabaseEngine.exe von dieser Seite aus zu installieren http : //www.Microsoft.com/en-us/download/details.aspx? id = 13255
Aber immer noch keine Freude.
Ich habe dann den folgenden Code in PowerShell ausgeführt (von der SQL Panda-Website http://goo.gl/A3Hu96 )
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
... was mir dieses Ergebnis gebracht hat (ich habe der Kürze halber andere Datenquellen entfernt) ...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Wie Sie sehen können, habe ich Microsoft.ACE.OLEDB. 15 . 0 (fünfzehn) nicht Microsoft.ACE.OLEDB. 12 . 0 (zwölf)
Also habe ich meine Verbindungszeichenfolge auf 15 geändert und es hat funktioniert.
Also ein kurzes PowerShell-Snippet, um zu demonstrieren, wie man die Version softcodiert ...
$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME
$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"
geändert, um die neueste ACE-Version auszuwählen, falls mehr als eine
Hoffentlich kann jeder, der dies findet, jetzt überprüfen, welche OLEDB-Version installiert ist, und die entsprechende Versionsnummer verwenden.
Sie müssen die Lösungsplattform von "Beliebige CPU" auf "x86" oder "x64" ändern, je nachdem, wie langsam die Office-Installation ist.
Die Schritte sind unten angegeben:
Kompilieren Sie Ihre Anwendung und führen Sie sie aus.
Wenn die installierte "AccessDatabaseEngine" immer noch nicht hilft, ist die folgende Lösung:
Sie müssen die Active Solution Platform von "Beliebige CPU" auf "x86" ändern.
OLEDB-Anbieter ist nicht auf dem lokalen Computer registriert
Von CodeProject.com
Obwohl viele Antworten gegeben wurden, wurde das Problem, auf das ich gestoßen bin, noch nicht erwähnt.
Die Installation des 32-Bit-Installationsprogramms AccessDatabaseEngine.exe , das von MS heruntergeladen wurde, meldet den Erfolg, wird jedoch NICHT installiert, wie mit dem Powershell-Skript eines der Programme überprüft postings oben hier.
Bei der Installation des 64-Bit-Installationsprogramms AccessDatabaseEngine_X64.exe wurde eine schockierende Fehlermeldung ausgegeben:
Die sehr einfache Lösung wurde hier auf einer Autodesk-Site gefunden. Fügen Sie einfach den Parameter/passive in die Befehlszeile ein:
AccessDatabaseEngine_X64.exe/passive
Installation erfolgreich, der OleDb-Treiber funktionierte.
Die Excel-Dateien, die ich mit OleDb verarbeite, sind vom Typ XLSX, wurden mit EPPlus 4.5 erstellt und mit Excel 2007 geändert.
Ich konnte dies beheben, indem ich die Schritte in diesem Artikel befolgte: http://www.mikesdotnetting.com/article/280/solved-the-Microsoft-ace-oledb-12-0-provider-is- nicht-registriert-auf-der-lokalen-Maschine
Der entscheidende Punkt für mich war:
Beim Debuggen mit IIS
standardmäßig verwendet Visual Studio die 32-Bit-Version. Sie können dies in Visual Studio ändern, indem Sie zu Extras "Optionen" Projekte und Lösungen "Webprojekte" Allgemein gehen und wählen
"Verwenden Sie die 64-Bit-Version von IIS Express für Websites und Projekte."
Nachdem ich diese Option aktiviert und dann das Plattformziel meines Projekts auf "Beliebige CPU" zurückgesetzt hatte (ich hatte es irgendwo im Fehlerbehebungsprozess auf x86 gesetzt), konnte ich den Fehler beheben.
Wenn Sie ein Webprojekt debuggen, vergewissern Sie sich, dass IIS Express in Abhängigkeit von Ihren Projekteinstellungen entweder in 32 oder 64 Bit ausgeführt wird.
Gehe zu
Extras> Optionen> Projekte und Lösungen> Webprojekte
und von dort aus aktivieren (oder deaktivieren) Sie das Kontrollkästchen "64-Bit-Version von IIS Express verwenden ...".
Überprüfen Sie zunächst, welche Version von Microsoft.ace.oledb.12.0 auf Ihrem System installiert ist.
Überprüfen Sie in unter Pfad C:\Programme\Gemeinsame Dateien\Microsoft Shared\OFFICE14\ACEOLEDB.DLL - 64 Bit ist installiert
Überprüfen Sie, ob unter dem Pfad C:\Programme (x86)\Gemeinsame Dateien\Microsoft Shared\OFFICE14\ACEOLEDB.DLL - x86 das Bit installiert ist
Wenn (x86) installiert ist, ändern Sie mithilfe von Configuration Manager die Lösungsplattform auf x86, und ändern Sie x64 auf x64.
Wenn nicht verfügbar, installieren Sie es über den folgenden Link
https://www.Microsoft.com/en-us/download/details.aspx?id=23734
Ich hatte dieses Problem beim Versuch, Daten aus einer Excel-Datei (xlsx) mit SSMS 2014 in eine SQL Server-Datenbank zu importieren.
Die 2007 Office System-Treiber: Data Connectivity Components -Installation hat den Trick für mich gemacht.
syp_dino,
Die Lösung für mich, wie Sie es für den "Microsoft.ACE.OLEDB.12.0" -Anbieter vorgeschlagen haben, ist nicht auf dem lokalen Computer registriert Fehler: Ändern Sie die Active Solution Platform von "Any CPU" auf "x86" ".
Als ich diese Schritte durchführte, die Lösung neu erstellte, die EXE-Datei griff und ins Netzwerk stellte, funktionierte auf dem Windows 7 64-Bit-Computer alles reibungslos.
Ich war mit dem gleichen Problem konfrontiert. Wechseln Sie zu den Lösungseigenschaften, und ändern Sie "Beliebige CPU" auf "x86". Ich denke, dies wird die Aufgabe erfüllen.
Laden Sie einfach die folgende Access DB-Engine (X86 oder X64: gemäß Ihrer Maschinenkonfiguration) herunter und installieren Sie sie.
https://www.Microsoft.com/en-us/download/confirmation.aspx?id=13255
Ich habe ein ähnliches Problem, wenn wir eine Excel-Datei lesen.
Geschichte des Problems:
Wir haben kürzlich unsere Anwendung aufgrund des Speicherbedarfs von 32-Bit auf 64-Bit migriert. Dafür haben wir unser Windows 7 von 32-Bit auf 64-Bit migriert. Trotzdem haben wir 32-Bit-Office auf unseren Rechnern installiert.
aus diesem Grund hatten wir dieses Problem beim Importieren von Excel-Daten in die Anwendung.
Lösung,
Ich habe die 64-Bit-Version von http://www.Microsoft.com/en-us/download/details.aspx?id=13255 heruntergeladen und mit folgendem Argument installiert:
AccessDatabaseEngine_x64.exe/passive
Ohne Codeänderung wird mein Problem behoben.
Hinweis:
Unter 64-Bit-Betriebssystemen und 64-Bit-Office funktionierte meine Funktionalität ohne dieses Update einwandfrei. Dieses Update ist nur erforderlich, wenn unsere Anwendung unter 64-Bit-Betriebssystemen ausgeführt wird, auf denen 32-Bit-Office installiert ist.
führen Sie die folgenden 2 Schritte aus: 1. In diesem Menü: Projekt -> Ihre Projekteigenschaften ... -> Erstellen: Deaktivieren Sie "32-Bit bevorzugen". Excel 12.0 Xml; HDR = JA '
var fileName = string.Format("{0}", openFileDialog1.FileName);
//var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", 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;
Ich habe die Anweisungen anderer befolgt. Installieren dieses Patches, Installieren dieses Patches sowie des Microsoft Access-Datenbankmoduls 2010.
Mein Problem war, dass ich dieselbe Bibliothek (linq2sql) an zwei Standorten auf meinem Computer verwende. 1 funktioniert und 1 nicht.
Schließlich stellte ich fest, dass ich 32-Bit-Anwendungen in den erweiterten Einstellungen des Apppools für meine nicht funktionierende Site aktivieren musste.
Alles funktioniert jetzt gut.
Das hat gerade bei mir funktioniert.
Für Ihr Anwendungspaket können Sie jedoch eine der folgenden Lösungen verwenden:
Oder
Denken Sie daran, AccessDatabaseEngine auf dem Server für die Webanwendung zu installieren.
Ich hatte Microsoft Access Database Engine 2010 Redistributable bereits auf meinem Computer installiert, erhielt aber weiterhin den Fehler Microsoft ACE OLEDB Provider.
Dann erinnerte ich mich, dass ich kürzlich ein Upgrade auf Office 2016 durchgeführt hatte. Vielleicht sollte ich versuchen, es erneut zu installieren Microsoft Access Database Engine 2010 Redistributable. Und das hat das Problem auf meiner Maschine behoben.
Wenn Sie also ein Upgrade auf eine andere Version von MS Office durchgeführt oder sogar MS Office repariert/neu installiert haben, installieren Sie Microsoft Access Database Engine 2010 Redistributable erneut, bevor Sie Zeit mit der Suche nach anderen Fixes verschwenden. Viel Glück!
Wenn Sie diesen Fehler erhalten, wenn Sie versuchen, ACE von einer ASP.NET-Anwendung aus zu verwenden, liegt die wahrscheinlichste Ursache darin, dass Sie eine der 32-Bit-Versionen installiert haben. Standardmäßig führt IIS auf einem 64-Bit-Betriebssystem Anwendungen in einem 64-Bit-Arbeitsprozess 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 finden. Wenn es nicht existiert, erhalten Sie die Fehlermeldung, die Sie hierher geführt hat.
In diesem Fall haben Sie zwei Möglichkeiten. Zunächst können Sie die 64-Bit-Version von 2010 installieren. Wenn Sie die 32-Bit-Version von 2007 installiert haben, können Sie einfach die 64-Bit-Version von 2010 daneben 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-Bit- und die 64-Bit-Version des 2010-Anbieters installieren. Wenn Sie die Installation auf Ihrem Entwicklungscomputer ausführen, werden Sie möglicherweise auch durch die Anzahl der vorhandenen Office-Installationen eingeschränkt.
Die zweite Möglichkeit besteht darin, den Anwendungspool in IIS zu ändern, um 32-Bit-Anwendungen zu aktivieren. Wenn Sie die Vollversion von IIS verwenden, können Sie dazu das Verwaltungstool verwenden (Systemsteuerung "Verwaltung" Internetinformationsdienste-Manager).
Zum besseren Verständnis siehe unten Link
1.) Überprüfen Sie Ihre Verbindungszeichenfolge mit ConnectionStrings.com .
2.) Stellen Sie sicher, dass Sie das richtige Datenbankmodul installiert haben. Dies waren die beiden Datenbank-Engines, die mir geholfen haben.
Microsoft Access Database Engine 2010 Redistributable
2007 Office System-Treiber: Datenverbindungskomponenten
3.) Möglicherweise liegt ein Problem mit der Build-Zielplattform "Beliebige CPU" vor. Möglicherweise muss es sich um "X86" (Eigenschaften, Build, Plattformziel) handeln.
kann auch diese Schritte versuchen
1.Öffnen Sie in SQL Server eine Datenbank 2.Clic in der Option 'Server Obtect' 3.Clic in 'Linked Servers' 4.Clic in 'Providers' 5.Clic Rigth in 'Microsoft.ACE.OLEDB.12.0' 6. Deaktivieren Sie alle Optionen und schließen Sie sie
Ich hatte das gleiche Problem, aber in diesem Fall war der Microsoft-ace-oledb-12-0-Provider bereits auf meinem Computer installiert und funktionierte problemlos für andere Anwendungen entwickelt.
Der Unterschied zwischen dieser Anwendung und der, bei der ich das Problem hatte, bestand darin, dass die alten Anwendungen auf "Local IIS" ausgeführt wurden, während die fehlerhafte Anwendung auf "IIS Express (running) ausgeführt wurde aus Visual Studio "). Also, was ich getan habe war-
- Klicken Sie mit der rechten Maustaste auf Projektname.
- Gehen Sie zu Eigenschaften
- Gehen Sie auf der rechten Seite zur Registerkarte "Web".
- Wählen Sie unter Server Lokal IIS und klicken Sie auf die Schaltfläche Virtuelles Verzeichnis erstellen.
- Führen Sie die Anwendung erneut aus und es funktionierte.
So habe ich es auf verschiedenen Computern gelöst:
Ich habe einen Windows 7 32-Bit-Computer mit Visual Studio 2012, auf dem die Access-Datenbank nicht vorhanden war, da ich nicht über Office 2010 verfüge. Ich habe dieselbe Quelle kopiert, die ich auf meinem Windows 7 64-Bit-Computer hatte.
Daher habe ich die AccessDatabaseEngine auf diesem Windows 7 32-Bit-Computer installiert, nachdem ich sie gemäß den obigen Vorschlägen von anderen hier heruntergeladen hatte, und alles hat einwandfrei funktioniert.
Ich hatte immer noch das Problem auf meinem Windows 7 64-Bit-Computer, auf dem bereits Office 2010 mit Access 2010 installiert ist. Auf diesem Computer löste ich das Problem, indem ich in PROJECT die Option Properties (Eigenschaften) auswählte und unter Platform target (Plattformziel) Any CPU I checked Prefer (Beliebige CPU, die ich bevorzugte) auswählte 32-Bit. Neu kompiliert/Build und der Microsoft.ACE.OLEDB.12.0-Anbieter ist nicht auf dem lokalen Computer registriert.
Dies hängt von dem von Ihnen installierten Office ab. Wenn Sie über x64-Bit-Office verfügen, müssen Sie die Anwendung als x64-Anwendung kompilieren, damit sie ausgeführt werden kann. Wenn Sie also möchten, dass sie auf x36 ausgeführt wird, müssen Sie Office x86 installieren, um dies zu akzeptieren. Ich habe es versucht Alle oben genannten Lösungen, aber keine funktionierten, bis mir klar wurde, dass ich Office x64bit hatte, und so baute ich die Anwendung als x64 und arbeitete
Ich habe diesen Fehler beim Importieren von Daten aus einer Excel-Datei in MS-SQL erhalten. Der Provider war bereits installiert (64-Bit) und das hat mich überrascht, warum es nicht funktioniert hat. Also habe ich nur die hier verwendete Import/Export-Anwendung gefunden, d. H. Die .EXE. Und ich fand es bei
C:\Programme\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe
Ich habe dann die .exe direkt ausgeführt, um den Datenimport durchzuführen. Und es hat funktioniert!