Question

J'utilise OleDB pour lire un fichier Excel.L'une des colonnes a un format « Commun » et contient à la fois des chaînes avec des lettres et des valeurs constituées uniquement de chiffres.Les valeurs de chaîne sont récupérées sans problème, mais les valeurs numériques pures sont récupérées sous forme de DBNull.

Comment résoudre?

J'utilise la chaîne de connexion suivante pour ouvrir Fichier Excel 2003 (xls):

"Provider=Microsoft.Jet.OLEDB.4.0;
 Data Source=C:\\file.xls;
 Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""
Était-ce utile?

La solution

J'ai trouvé de la documentation sur le site Web de Microsoft qui s'applique à votre scénario.Ils recommandent de convertir tous les chiffres en chaînes.

http://support.microsoft.com/kb/257819

Comme indiqué précédemment, ADO doit deviner le type de données de chaque colonne de votre feuille de calcul ou plage Excel.(Ceci n'est pas affecté par les paramètres de formatage des cellules Excel.) Un problème sérieux peut survenir si des valeurs numériques sont mélangées avec des valeurs de texte dans la même colonne.Le Jet et le fournisseur ODBC renvoient les données du type majoritaire, mais renvoient des valeurs NULL (vides) pour le type de données minoritaire.Si les deux types sont mélangés de manière égale dans la colonne, le fournisseur choisit le numérique plutôt que le texte.

Par exemple:

* In your eight (8) scanned rows, if the column contains five (5) numeric values and three (3) text values, the provider returns five (5) numbers and three (3) null values.
* In your eight (8) scanned rows, if the column contains three (3) numeric values and five (5) text values, the provider returns three (3) null values and five (5) text values.
* In your eight (8) scanned rows, if the column contains four (4) numeric values and four (4) text values, the provider returns four (4) numbers and four (4) null values.

Autres conseils

J'ai le même problème mais avec les valeurs de chaîne.Les valeurs numériques sont renvoyées mais les valeurs de chaîne sont renvoyées sous la forme NULL.Je souhaite charger des valeurs numériques sous forme de valeurs de chaîne.La colonne peut contenir des chiffres et des codes non numériques (exemple :100344567 et PRD001X01).

Le pilote Excel considère que la colonne est de type numérique car les valeurs des 8 premières lignes sont de type numérique.

Même si je définis les cellules comme Texte (Format Cell), cela ne fonctionne pas.

Pour forcer le pilote à "voir" la colonne sous forme de chaîne, j'ai simplement mis un guillemet devant la valeur numérique ('100344567).Cela transforme la valeur numérique en chaîne.

Cette valeur de 8 lignes est définie dans le Registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\ -->TypeGuessRows=8.

J'espère que cela aidera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top