J'essaie d'obtenir des données d'un fichier Excel sur un événement de clic de bouton. Ma chaîne de connexion est:
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, le message d'erreur suivant s'affiche:
Le fournisseur 'Microsoft.ACE.OLEDB.12.0' n'est pas enregistré sur la machine locale.
Je ne sais pas comment résoudre ce problème. Mon système d'exploitation est Windows 7.
Eh bien, vous devez l'installer. Vous cherchez:
Une version 64 bits du '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 à partir de la réponse acceptée, vous devrez créer pour x86, comme indiqué par @ backtestbroker.com.
en fonction de l'application (32/64bit) en utilisant la connexion, vous pouvez simplement installer
Sommaire:
vérifiez vos fournisseurs avec la commande powershell de Shell 32 et 64 bits :
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
et vous verrez quel fournisseur votre système peut utiliser
la longue histoire: les chaînes peuvent être trouvées avec http://live.sysinternals.com/strings.exe
par exemple. sur un système 64 bits avec des pilotes 32 bits installés
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"
même dans le bureau à venir 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
vous trouverez les ficelles
Microsoft.ACE.OLEDB
Microsoft.ACE.Oledb.12.0
office 2013 est également livré avec csi.dll
c:\Program Files (x86)\Common Files\Microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
qui contient le " Microsoft.ACE.OLEDB.15.0 "
et 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
qui a la version " Microsoft.ACE.OLEDB.16.0 "
La première chose à vérifier est la configuration de votre application.
Si vous avez construit votre projet sous une plate-forme x86 , vous devez installer les packages suivants sur votre ordinateur afin de résoudre ce problème:
Pour pouvoir utiliser le fournisseur 'Microsoft.ACE.OLEDB.12.0', vous devez d'abord installer le moteur de base de données Microsoft Access 2010 . Cette installation est disponible à l'adresse suivante: : http://www.Microsoft.com/download/en/details.aspx?id=13255 .
Une fois l'installation terminée, essayez de lancer votre application. Si cela résout le problème, sinon, passez à l'étape 2.
Cette étape suivante constitue une solution de contournement inexpliquée, qui fonctionne pour Office 2010, même s'il s'agit des composants de connectivité de données d'Office 2007. Je ne sais pas trop pourquoi cela fonctionne, mais cela fonctionne et il a été prouvé que cela fonctionnait dans presque tous les cas. Vous devez installer le Pilote Office System 2007: Composants de connectivité de données . Cette installation est disponible à l'adresse suivante: http://www.Microsoft. com/download/fr/confirmation.aspx? id = 23734 .
Une fois cette installation terminée, essayez d’exécuter votre application, cela devrait résoudre le problème.
Si vous essayez d'exécuter une application construite sous la plate-forme x64 ou AnyCPU , je vous recommanderais tout d'abord de vérifier qu'elle fonctionne comme prévu sous la plate-forme x86. S'il ne s'exécute pas sous cette plate-forme x86, suivez les étapes décrites dans la première partie et vérifiez qu'il s'exécute comme prévu.
J'ai lu que les pilotes MS Access, y compris le pilote de base de données OLEDB, ne fonctionnent que sous la plate-forme x86 et sont incompatibles sous la plate-forme x64 ou AnyCPU. Mais cela semble être faux. J'ai validé que mon application était en cours d'exécution lors de la construction de x86, puis j'ai installé le moteur de base de données Access à l'aide de l'indicateur passif.
Après ces 2 étapes, j'ai réussi à exécuter mon application après avoir construit la configuration de construction x64 ou AnyCPU. Cela a semblé résoudre mon problème.
Remarque: l'ordre des étapes semble faire la différence, veuillez donc suivre en conséquence.
J'ai eu cette erreur/exception dans Visual Studio 2010 lorsque j'ai modifié ma construction dans la boîte de dialogue Configuration Manager de "x86" à "Tout processeur". Je comprends que ce pilote de base de données OLEDB ne fonctionne que sous x86 et qu’il n’est pas compatible 64 bits. Remettre la configuration de construction à x86 a résolu le problème pour moi.
J'ai installé les pilotes MS et cela ne fonctionnait toujours pas pour moi. Ensuite, j'ai trouvé cet article de blog qui a résolu le problème. Lisez-le ici, sinon utilisez ces deux images (liées à cet article) en tant que résumé du TLDR:
Si vous utilisez 64 bits, mais que le problème persiste même après l'installation de AccessDatabaseEngine, voir cet article , le problème a été résolu pour moi.
c'est-à-dire que vous devez installer this AccessDatabaseEngine
Pour tous ceux qui sont encore touchés par cela.
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 le PO, Shailesh Sahu.
J'ai 64 bits Windows 7.
Mon problème se situe dans des scripts PowerShell , mais utilise une chaîne de connexion similaire à celle de l'OP. J'espère donc que mes résultats pourront être appliqués à C #, PowerShell et à tout autre langage utilisant le Pilote "Microsoft.ACE.OLEDB".
J'ai suivi les instructions sur ce fil de discussion MS: http://goo.gl/h73RmI
J'ai d'abord essayé d'installer la version 64 bits , puis la version 32 bits de AccessDatabaseEngine.exe à partir de 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 (à partir 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é d'autres sources de données par souci de brièveté) ...
SOURCES_NAME SOURCES_DESCRIPTION
------------ -------------------
Microsoft.ACE.OLEDB.15.0 Microsoft Office 15.0 Access Database Engine OLE DB Provider
Comme vous pouvez le constater, j'ai Microsoft.ACE.OLEDB. 15 . 0 (quinze) pas Microsoft.ACE.OLEDB. 12 . 0 (douze)
Donc, j'ai modifié ma chaîne de connexion à 15 et cela a fonctionné.
Donc, un extrait de code PowerShell expliquant comment coder la version de manière souple ...
$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
Espérons que tous ceux qui le trouveront pourront à présent vérifier quelle version d'OLEDB est installée et utiliser le numéro de version approprié.
Vous devez modifier la Solution Solution de "Tout processeur" à "x86" ou "x64" en fonction du nombre de bits de l'installation bureautique.
Les étapes sont indiquées ci-dessous:
Compilez et exécutez votre application.
Si "AccessDatabaseEngine" installé ne résout toujours pas le problème, voici la solution:
Vous devez modifier la plate-forme de solution active de "Tout processeur" à "x86".
Le fournisseur OLEDB n'est pas enregistré sur la machine locale
De CodeProject.com
Bien que de nombreuses réponses aient été données, le problème que j'ai rencontré n'était pas encore mentionné.
L’installation du programme d’installation 32 bits AccessDatabaseEngine.exe telle que téléchargée à partir de MS signale le succès, mais elle n’EST PAS installée, comme l’a vérifié le script Powershell de l’un des messages ci-dessus ici.
L'installation du programme d'installation 64 bits AccessDatabaseEngine_X64.exe a signalé un message d'erreur choquant:
La solution très simple a été trouvée ici sur un site Autodesk. Ajoutez simplement le paramètre/passif à la chaîne de ligne de commande, comme ceci:
AccessDatabaseEngine_X64.exe/passif
Installation réussie, le pilote OleDb a fonctionné.
Les fichiers Excel que je traite avec OleDb sont de type xlsx, produits avec EPPlus 4.5 et modifiés avec Excel 2007.
J'ai pu résoudre ce problème en suivant les étapes décrites dans cet article: http://www.mikesdotnetting.com/article/280/solved-the-Microsoft-ace-oledb-12-0-provider-is- non-enregistré-sur-la-machine-locale
Le point clé pour moi était le suivant:
Lors du débogage avec IIS,
par défaut, Visual Studio utilise la version 32 bits. Vous pouvez changer cela à partir de Visual Studio en allant dans Outils "Options" Projets et solutions "Projets Web" Général, et en choisissant
"Utiliser la version 64 bits de IIS Express pour les sites Web et les projets"
Après avoir coché cette option, puis redéfini la cible de la plate-forme de mon projet sur "Tout processeur" (je l'avais définie sur x86 quelque part dans le processus de dépannage), j'ai pu surmonter l'erreur.
Si vous déboguez un projet Web, assurez-vous simplement que IIS Express s'exécute en 32 ou 64 bits, selon les paramètres de votre projet.
Aller à
Outils> Options> Projets et solutions> Projets Web
et à partir de là, cochez (ou décochez) l'option "Utiliser la version 64 bits de IIS Express ..."
Commencez par vérifier quelle version de Microsoft.ace.oledb.12.0 est installée sur votre système.
Archiver sous le chemin C:\Program Files\Fichiers communs\Microsoft Shared\OFFICE14\ACEOLEDB.DLL - 64 bits est installé.
Archiver sous le chemin C:\Program Files (x86)\Fichiers communs\Microsoft Shared\OFFICE14\ACEOLEDB.DLL - x 86 bits est installé.
Si (x86) est installé, à l’aide de Configuration Manager, changez la plate-forme de la solution en x86, pour x64, passez à x64.
Si non disponible, installez en utilisant le lien ci-dessous
https://www.Microsoft.com/en-us/download/details.aspx?id=23734
Je rencontrais ce problème lorsque j'essayais d'importer des données d'un fichier Excel (xlsx) dans une base de données SQL Server à l'aide de SSMS 2014.
Le 2007 Pilote Office System: Composants de connectivité de données a été le bon choix pour moi.
syp_dino,
La solution pour moi, comme vous l'avez suggéré pour le "Microsoft.ACE.OLEDB.12.0 'fournisseur n'est pas enregistré sur l'ordinateur local" erreur est de changer la plate-forme de solution active de "Tout processeur" à "x86 ".
Lorsque j’ai effectué ces étapes, reconstruit la solution, récupéré le fichier EXE et placé sur le réseau, tout s’est déroulé sans encombre sur la machine Windows 7 64 bits.
J'ai fait face au même problème. Accédez aux propriétés de la solution et définissez N'importe quel processeur en x86. Je pense que cela fera l'affaire.
Il suffit de télécharger et d'installer le moteur Access DB suivant (X86 ou X64: selon la configuration de votre ordinateur) et de voir la magie :)
https://www.Microsoft.com/en-us/download/confirmation.aspx?id=13255
J'ai le même problème lorsque nous lisons un fichier Excel.
Histoire du problème:
Nous avons récemment migré notre application de 32 bits à 64 bits en raison de la mémoire requise. Pour cela, nous avons migré nos fenêtres 7 de 32 bits à 64 bits. Mais toujours nous avons installé le bureau 32 bits sur nos machines.
à cause de cela, nous avons eu ce problème lors de l'importation de données Excel dans l'application.
Solution,
J'ai téléchargé la version 64 bits du http://www.Microsoft.com/en-us/download/details.aspx?id=13255 et l'ai installé avec l'argument as,
AccessDatabaseEngine_x64.exe/passif
Sans changement de code, mon problème est résolu.
Remarque:
Sous OS 64 bits et bureau 64 bits, ma fonctionnalité fonctionnait parfaitement sans ce correctif. Ce correctif n’est requis que lorsque notre application 64 bits est exécutée sur un système d’exploitation 64 bits sur lequel Office 32 bits est installé.
faites ceci en 2 étapes: 1. dans ce menu: projet -> vos propriétés de projet ... -> Générer: décochez "préfère 32 bits" 2. dans connectionString: écrire des notes avant et après les propriétés étendues, comme ceci: Propriétés étendues = ' Excel 12.0 Xml; HDR = YES '
var fileName = string.Format("{0}", openFileDialog1.FileName);
//var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, TableNmae);
DataTable data = ds.Tables[TableNmae];
dg1.DataSource = data;
J'ai suivi les instructions énoncées par d'autres; installer ce correctif, ce correctif ainsi que le moteur de base de données Microsoft Access 2010.
Mon problème était que j'utilise la même bibliothèque (linq2sql) dans 2 sites sur ma machine; 1 fonctionne et 1 ne fonctionne pas.
Finalement, j'ai découvert que je devais "activer les applications 32 bits" dans les paramètres avancés de l'apppool pour mon site qui ne fonctionnait pas.
Tout fonctionne bien maintenant.
Cela a fonctionné pour moi en ce moment.
Mais pour votre package d'application, vous pouvez utiliser l'une des solutions suivantes:
Ou
N'oubliez pas d'installer AccessDatabaseEngine sur le serveur pour l'application Web.
J'avais le moteur de base de données Microsoft Access 2010 redistribuable était déjà installé sur ma machine, mais je recevais toujours l'erreur fournisseur Microsoft ACE OLEDB.
Ensuite, je me suis rappelé que j'avais récemment effectué une mise à niveau vers Office 2016; il est donc possible que je devrais essayer de réinstaller moteur de base de données Microsoft Access 2010 redistribuable. Et cela a résolu le problème sur ma machine.
Donc, si vous avez mis à niveau vers une version différente de MS Office ou même réparé/réinstallé votre système, essayez de réinstaller moteur de base de données Microsoft Access 2010 redistribuable avant de perdre du temps à rechercher d'autres correctifs. Bonne chance!
Si vous obtenez cette erreur lorsque vous essayez d'utiliser ACE à partir d'une application ASP.NET, la cause la plus probable est que vous avez installé l'une des versions 32 bits. Par défaut, IIS sur un système d'exploitation 64 bits exécute des applications dans un processus de travail 64 bits. Les processus 64 bits ne peuvent pas charger les DLL 32 bits. Lorsqu'un appel est fait au fournisseur ACE, le processus 64 bits tentera de localiser une DLL 64 bits. S'il n'existe pas, vous obtenez le message d'erreur qui vous a amené ici.
Dans ce cas, vous avez deux options. Tout d'abord, vous pouvez installer la version 64 bits 2010. Si vous avez installé la version 32 bits 2007, vous pouvez simplement installer la version 64 bits 2010 à ses côtés. Si vous avez installé la version 32 bits de 2010, vous devez la désinstaller, puis télécharger et installer la version 64 bits 2010. Les versions 32 et 64 bits du fournisseur 2010 ne peuvent pas être installées simultanément. Si vous effectuez l'installation sur votre ordinateur de développement, vous pouvez également être limité par le bit-ness de toute installation Office existante.
La deuxième option consiste à modifier le pool d'applications dans IIS pour activer les applications 32 bits. Si vous utilisez la version complète d'IIS, vous pouvez utiliser l'outil de gestion à cet effet (Panneau de configuration "Outils d'administration" Gestionnaire des services Internet (IIS)).
Pour plus de compréhension s'il vous plaît se référer ci-dessous lien
1.) Vérifiez votre chaîne de connexion avec ConnectionStrings.com .
2.) Assurez-vous que le bon moteur de base de données est installé. Ce sont les deux moteurs de base de données qui m'ont aidé.
Redistribuable du moteur de base de données Microsoft Access 201
Pilote Office System 2007: Composants de connectivité de données
3.) Il pourrait y avoir un problème avec votre plate-forme cible de génération: "Tout processeur", mais "X86" (Propriétés, Construction, Cible de la plate-forme).
peut également essayer ces étapes
Dans SQL Server, 1. Ouvrez une base de données 2.Cliquez sur l'option "Obtient le serveur" 3.Cliquez sur "Serveurs liés" 4.Cliquez sur "Fournisseurs" 5.Clic Rigth dans "Microsoft.ACE.OLEDB.12.0" 6. Décochez toutes les options et fermez
J'ai eu le même problème, mais dans ce cas Microsoft-ace-oledb-12-0-provider était déjà installé sur ma machine et fonctionnait correctement pour une autre application. développé.
La différence entre ces applications et celle avec laquelle je rencontrais le problème était que les anciennes applications fonctionnaient sur "IIS local" alors que celle avec l'erreur était sur "IIS Express (en cours d'exécution de Visual Studio "). Alors ce que j'ai fait était-
- Clic droit sur Nom du projet.
- Aller aux propriétés
- Allez sur l'onglet Web à droite.
- Sous Servers, sélectionnez Local IIS et cliquez sur le bouton Create Virtual Directory.
- Exécutez l'application à nouveau et cela a fonctionné.
La façon dont je l'ai résolu sur différents ordinateurs:
J'ai un ordinateur Windows 7 32 bits avec Visual Studio 2012 qui ne possédait pas la base de données Access car je ne disposais pas d'Office 2010. J'ai copié le même code source que celui de mon ordinateur Windows 7 64 bits.
J'ai donc installé AccessDatabaseEngine sur cette machine Windows 7 32 bits après l'avoir téléchargée conformément aux suggestions ci-dessus des autres personnes et tout s'est bien déroulé.
J'ai toujours eu le problème sur mon ordinateur Windows 7 64 bits, qui possède déjà Office 2010, qui inclut déjà Access 2010. La solution que j'ai résolue sur cet ordinateur a été d'aller dans le PROJET, dans les propriétés sélectionnées et sur la cible de la plate-forme, quel que soit le processeur sélectionné. 32 bits. Recompiled/Build et le fournisseur Microsoft.ACE.OLEDB.12.0 'n’est pas inscrit sur le message de la machine locale.
Cela dépend du bureau que vous avez installé, si vous avez x64 bit office, vous devez compiler l'application sous forme de x64 pour lui permettre de s'exécuter. Si vous voulez qu'elle s'exécute sur x36, vous devez installer office x86 pour l'accepter. J'ai essayé toutes les solutions ci-dessus mais aucune n'a fonctionné jusqu'au moment où j'ai réalisé que j'avais un bureau x64bit et que j'ai donc construit l'application en tant que x64 et que je travaillais
J'ai reçu cette erreur lors de l'importation de données à partir d'un fichier Excel dans MS-SQL. Le fournisseur était déjà installé (64 bits) et cela m'a surpris de savoir pourquoi cela ne fonctionnait pas. Je n’ai donc fait que localiser l’application d’import/export utilisée ici, c’est-à-dire le fichier .EXE. Et je l'ai trouvé à
C:\Programmes\Microsoft SQL Server\130\DTS\Binn\DTSWizard.exe
J'ai ensuite exécuté le fichier .exe directement pour effectuer l'importation de données. Et ça a marché!