Para todos aquellos aún afectados por esto.
He estado recibiendo el error ...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
... según lo descrito por el OP, Shailesh Sahu.
Tengo 64 bits de Windows 7.
Mi problema está dentro de los scripts de PowerShell , pero está usando una cadena de conexión, similar a la publicación del OP, por lo que espero que mis hallazgos se puedan aplicar a C #, PowerShell y cualquier otro lenguaje que se base en el controlador "Microsoft.ACE.OLEDB".
Seguí las instrucciones en este hilo del foro de MS: http://goo.gl/h73RmI
Primero intenté instalar la versión de 64 bits , luego instalé la versión de 32 bits de AccessDatabaseEngine.exe desde esta página
http://www.microsoft.com/en-us/download/details.aspx?id=13255
Pero todavía no hay alegría.
Luego ejecuté el siguiente código en PowerShell (desde el sitio de SQL Panda http://goo.gl/A3Hu96 )
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
... lo que me dio este resultado (he eliminado otras fuentes de datos por brevedad) ...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Como puede ver, tengo Microsoft.ACE.OLEDB. 15 .0 (quince) no Microsoft.ACE.OLEDB. 12 .0 (doce)
Entonces, modifiqué mi cadena de conexión a 15 y funcionó.
Por lo tanto, un fragmento rápido de PowerShell para demostrar cómo codificar la versión en software ...
$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`";"
modificado para elegir la última versión de ACE, si hay más de una
Con suerte, cualquiera que encuentre esto ahora puede verificar para ver qué versión OLEDB está instalada y usar el número de versión apropiado.