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 beschrieben, Shailesh Sahu.
Ich habe 64bit Windows 7.
Mein Problem liegt in PowerShell- Skripten, es wird jedoch eine Verbindungszeichenfolge verwendet, die dem Beitrag des OP ähnelt. Daher können meine Ergebnisse hoffentlich auf C #, PowerShell und jede andere Sprache angewendet werden, die auf dem Treiber "Microsoft.ACE.OLEDB" basiert.
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 von AccessDatabaseEngine.exe von dieser Seite
http://www.microsoft.com/en-us/download/details.aspx?id=13255 zu installieren
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.
Ein kurzes PowerShell-Snippet, das zeigt, wie die Version softcodiert wird ...
$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 vorhanden ist
Hoffentlich kann jeder, der dies findet, jetzt überprüfen, welche OLEDB-Version installiert ist, und die entsprechende Versionsnummer verwenden.