web-dev-qa-db-fra.com

obtention d'une erreur inattendue du pilote de base de données externe (1) lors de l'importation de données d'Excel pour y accéder

J'ai un 2010 Excel file avec une feuille qui couvre 34864 rows et 1387 columns. J'essaie de l'importer dans Access 2010 avec l'assistant d'importation, mais lorsque je sélectionne cette feuille, Access ne répond plus et, après quelques secondes, me donne 

"Erreur inattendue du pilote de base de données externe (1)"

Est-ce dû à la taille de la feuille ou y a-t-il quelque chose dans les cellules qui l'empêche de fonctionner? D'autres feuilles du même fichier importent sans problème.

10
user1251858

Vous pouvez rencontrer cette erreur après l'installation du correctif de sécurité KB4041681. Voir ceci MSDN entry . Dans mon cas, le remplacement de Microsoft.Jet.OLEDB.4.0 fournisseur par Microsoft.ACE.OLEDB.12.0 m'a aidé.

12
BusinessAlchemist

Découvrez cette spécification pour Access 2010: http://office.Microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx .

Dans votre cas, il peut s'agir du nombre de colonnes, essayez donc d'abord d'en importer moins de 255. En outre, il peut s'agir de la taille des données dans les colonnes ou des types de données (importation de texte sous forme numérique, etc.)

3
Igor Turman

Je viens d’expérimenter ce problème aussi et j’ai trouvé une solution très simple et facile. J'ai remarqué que mon tableur avait un nom personnalisé, j'ai donc décidé de voir si cela posait problème. Je l'ai changé pour le nom par défaut de "Sheet1" et, bien sûr, cela a fonctionné !!

2
RHiggins

Téléchargez et installez le Redistributable Microsoft Access Database Engine 2010, puis modifiez les chaînes de connexion à la base de données dans Microsoft Excel pour utiliser ACE en tant que fournisseur. 

Changer (exemple):

Provider=Microsoft.Jet.OLEDB.4.0

à:

Provider=Microsoft.ACE.OLEDB.12.0.

Microsoft travaille sur une résolution et fournira une mise à jour dans une prochaine version.

2
akshay saravanan

Utilisez ceci

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")

au lieu de cela

OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")
2
alexey

Enregistrez votre feuille Excel dans un fichier .CSV 'Délimité par des virgules', puis envoyez-la sous forme de fichier texte. Pour moi, cela fonctionne bien.

Le problème est que, dans .xls (x), toutes sortes de problèmes de mise en page sont présents. La convertir en .CSV supprime toute annotation liée à la mise en page et la convertit en données «brutes».

bonne chance!

1
Tobias

Sur le modèle de RHiggins répondent:

Dans mon cas, Jet OleDb.4.0 a renvoyé cette erreur (oledbconnection.open ()) car le nom d'une feuille de calcul dans un classeur (.xls) était trop long. 

1
jb_

Un autre problème qui est découvert est que si le fichier Excel est enregistré en tant que feuille de calcul Excel binaire, il suffit de le réenregistrer en tant que classeur Excel et le chargement est correct.

0
Bob

J'ai eu le même problème, après avoir obtenu une mise à jour de sécurité dans Windows7, cette erreur s'est produite. Nous avons trop de fichiers Excel pour effectuer une opération d'ouverture/fermeture, j'ai donc décidé d'essayer d'autres méthodes.

1- Retournez un point de restauration quand Access fonctionnait bien: Cela ne fonctionnait pas dans mon cas. La seule modification apportée à la configuration logicielle est une mise à jour de sécurité et il semble que cette mise à jour pose toujours problème.

2- Réduire les lignes, les colonnes, etc.: Cela n’a pas fonctionné pour moi; Le premier fichier que l'accès essayait d'atteindre avait 10 000 lignes, réduire ce nombre à 3 n'était pas la solution.

3- Essayer de modifier la chaîne de connexion: Cela n’a pas fonctionné pour moi, ce n’est pas très raisonnable non plus; la connexion fonctionne depuis des années, pourquoi tout à coup s’arrêterait-elle? Dans certains cas, c'est le cas mais pas cette fois.

4- La désinstallation de la dernière mise à jour de sécurité a fonctionné dans mon cas. Voici la mise à jour de sécurité désinstallée.

Capture d'écran de la mise à jour de sécurité désinstallée

Bonne chance pour résoudre.

0
Tuncermuncer

Résolu pour Windows 7:

Désinstallez les mises à jour de sécurité KB4041681 et KB4041678 les deux (en rapport avec les fournisseurs Excel et Jet/ACE)

0
Diksha

Dans mon cas, la feuille de calcul était liée à une autre feuille de calcul. J'importais un sous-ensemble de la feuille d'origine. J'ai créé une nouvelle feuille et copié les données colonne par colonne dans le bloc-notes, puis dans la nouvelle feuille en supprimant les liens . Il y avait quelque chose dans les liens qui posait problème.
BTW: il s’agissait de cet ensemble de données depuis que j’ai effectué plus de 50 fois cette séquence d’importation à partir de cette feuille de calcul vers cette base de données. Réduire de moitié les données a fonctionné pour la première moitié (plus grande) des données, mais pas pour la seconde.

0
Dave

Une solution qui a fonctionné pour moi pour résoudre ce problème consiste à ouvrir le fichier Excel où l'importation/exportation est en cours d'exécution au moment de l'importation et de l'exportation.

Le problème semble être dû au fait que le correctif empêche la transaction de données de se produire entre les fichiers .xls FERMÉS et d'autres applications de base de données externes. L'ouverture du fichier Excel résout ce problème.

Quelques exemples de code ci-dessous pour mettre en évidence ce qui fonctionne et ce qui ne fonctionne pas avec VBA:

ÉCHOUE

wbTarget.SaveAs strFilename, xlExcel8
wbTarget.Close    
ExportSheetToDB strFilename, strSheetName, "tblTemp"

TRAVAUX

wbTarget.SaveAs strFilename, xlExcel8
ExportSheetToDB strFilename, strSheetName, "tblTemp"
wbTarget.Close
0
user2627727

Dans mon cas (j'ai la même erreur) le problème était que j'avais la base de données Access stockée sur un lecteur réseau qui manquait d'espace (pas assez d'espace libre pour que l'importation se termine). J'ai libéré de l'espace et compacté la base de données; l'erreur ne s'est pas reproduite.

0
Maciej Lipinski

J'ai eu exactement la même erreur. La feuille de calcul a été créée à partir d’un autre logiciel (SAP). Comme il n’a pas été créé par Office, Excel n’a pas pu le lire (!?!). Je dois les ouvrir dans Excel, le sauvegarder, puis le charger dans Access et ça marche! Dans le pire des cas, supposons que vous avez des dizaines de fichiers, vous pouvez simplement les ouvrir et les fermer avec du code VBA avant l'importation. 

0
Séb Cô

Je recevais cette erreur lors de l'importation à partir d'un fichier XLSB, sauvegardez le fichier au format XLSX puis importez, devrait fonctionner

0
bharat1010

salut je suis également confronté à cette erreur lors de l'importation du fichier .xlsb. Après cela, j'ai copié le contenu dans un autre fichier xlsx puis importez ce fichier xlsx.

0
Singaravelan