567 votes

Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas enregistré sur la machine locale.

J'essaie d'obtenir des données d'un fichier Excel lors d'un événement de clic de bouton. Ma chaîne de connexion est la suivante :

 string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";

Lorsque je clique sur le bouton, j'obtiens l'erreur suivante :

Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas enregistré sur la machine locale.

Je n'ai pas la moindre idée de la façon de résoudre ce problème. Mon système d'exploitation est Windows 7.

660voto

Variant Points 7827

Eh bien, vous devez l'installer. C'est ce que vous cherchez :

199voto

rsbarro Points 12575

Une version 64 bits de "Microsoft Access Database Engine 2010 Redistributable" qui vous permettra d'utiliser le fournisseur "Microsoft.ACE.OLEDB.12.0" est disponible ici :
http://www.microsoft.com/en-us/download/details.aspx?id=13255

Si vous utilisez le téléchargement de la réponse acceptée, vous devrez construire pour x86, comme l'a souligné @backtestbroker.com.

35voto

J'ai obtenu cette erreur/exception dans Visual Studio 2010 lorsque j'ai changé ma construction dans la boîte de dialogue du gestionnaire de configuration de "x86" à "Any CPU". Ce pilote de base de données OLEDB, si j'ai bien compris, ne fonctionne qu'en x86 et n'est pas compatible avec les 64 bits. Changer la configuration de construction pour revenir à x86 a résolu le problème pour moi.

17voto

TechSpud Points 136

Pour tous ceux qui sont encore affectés par cette situation.

J'ai eu l'erreur...

OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."

...comme décrit par l'OP, Shailesh Sahu.

J'ai Windows 7 64 bits.

Mon problème est dans PowerShell J'espère donc que mes conclusions pourront être appliquées à C#, PowerShell et tout autre langage utilisant le pilote "Microsoft.ACE.OLEDB".

J'ai suivi les instructions de ce fil de discussion du forum MS : http://goo.gl/h73RmI

J'ai d'abord essayé d'installer le 64 bits puis l'installation de la version 32 bits version de l'AccessDatabaseEngine.exe depuis cette page http://www.microsoft.com/en-us/download/details.aspx?id=13255

Mais toujours pas de joie.

J'ai ensuite exécuté le code ci-dessous dans PowerShell (extrait du site de SQL Panda http://goo.gl/A3Hu96 )

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

...ce qui m'a donné ce résultat (j'ai supprimé les autres sources de données par souci de concision)...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

Comme vous pouvez le voir, j'ai Microsoft.ACE.OLEDB. 15 .0 (quinze) pas Microsoft.ACE.OLEDB. 12 .0 (douze)

J'ai donc modifié ma chaîne de connexion en 15 et ça a marché.

Donc, un petit extrait PowerShell pour démontrer comment coder la version...

$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`";"

modifié pour choisir la dernière version de ACE, si plusieurs

Avec un peu de chance, toute personne découvrant ce problème peut maintenant vérifier quelle version d'OLEDB est installée et utiliser le numéro de version approprié.

16voto

aximili Points 6760

Si vous utilisez un système 64 bits et que vous rencontrez toujours des problèmes même après avoir installé AccessDatabaseEngine, consultez le site suivant ce poste cela a résolu le problème pour moi.

C'est-à-dire que vous devez installer este AccessDatabaseEngine

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X