Je nach verwendeter App (32/64-Bit) über die Verbindung können Sie einfach installieren
Zusammenfassung:
-
Alle Büroanwendungen von 2007-2016 enthalten den Anbieter "Microsoft.ACE.Oledb.12.0"
-
Abhängig von der Architektur Ihrer Anwendung wählen Sie den entsprechenden Runtimemotor (32/64)6
-
Überprüfen Sie Ihre Anbieter mit dem PowerShell-Befehl aus beiden 32- und 64-Bit-Shells:
(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 Strings können mit http://live.sysinternals.com/strings.exe gefunden werden
Zum Beispiel auf einem 64-Bit-System mit installierten 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 in dem kommenden Office 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
werden Sie die Strings finden
-
Microsoft.ACE.OLEDB
-
Microsoft.ACE.Oledb.12.0
Das Office 2013 enthält auch csi.dll
c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
die "Microsoft.ACE.OLEDB.15.0" enthält
und Office 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
die die Version "Microsoft.ACE.OLEDB.16.0" hat
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.
1 Stimmen
Siehen Sie auch diese Antwort stackoverflow.com/a/14401857/21579 für den Unterschied zwischen Microsoft.Jet.OleDb und Microsoft.Ace.OleDb.
4 Stimmen
@user1040323,
execute master.dbo.xp_enum_oledb_providers
zeigt Ihnen, was auf dem Server ist, nicht auf Ihrem Lokalen Computer.6 Stimmen
Hier derjenige, der funktionieren sollte; - Es ist : Nicht wirklich dokumentiert, aber ich habe einen Weg gefunden, um sowohl die 32-Bit- als auch die 64-Bit-Versionen zu installieren. Fügen Sie einfach das Kommandozeilenargument "/passive" dem Befehl hinzu: "C:\Verzeichnispfad\AccessDatabaseEngine_x64.exe" /passive