Para todos aqueles ainda afetados por isso.
Estou recebendo o erro ...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
... como descrito pelo OP, Shailesh Sahu.
Eu tenho o Windows 7 de 64 bits.
Meu problema está nos scripts do PowerShell , mas estou usando uma string de conexão, semelhante à postagem do OP, por isso espero que minhas descobertas possam ser aplicadas ao C #, PowerShell e qualquer outro idioma que dependa do driver "Microsoft.ACE.OLEDB".
Segui as instruções neste tópico do fórum da Microsoft: http://goo.gl/h73RmI
Tentei primeiro instalar a versão de 64 bits e depois instalar a versão de 32 bits do AccessDatabaseEngine.exe a partir desta página
http://www.microsoft.com/en-us/download/details.aspx?id=13255
Mas ainda não há alegria.
Em seguida, executei o código abaixo no PowerShell (no site do SQL Panda http://goo.gl/A3Hu96 )
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
... o que me deu esse resultado (removi outras fontes de dados por questões de concisão) ...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Como você pode ver, eu tenho o Microsoft.ACE.OLEDB. 15 .0 (quinze) não Microsoft.ACE.OLEDB. 12 .0 (doze)
Então, alterei minha string de conexão para 15 e funcionou.
Portanto, um snippet rápido do PowerShell para demonstrar como codificar a versão da versão virtual ...
$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`";"
alterado para escolher a versão mais recente do ACE, se mais de um
Felizmente, qualquer pessoa que encontrar isso agora pode verificar para ver qual versão do OLEDB está instalada e usar o número de versão apropriado.