DBNull dans des cellules non vides lors de la lecture d'un fichier Excel via OleDB
- Je utiliser OleDB pour lire un fichier Excel. L'une des colonnes a un "Commun", de format et contient à la fois des chaînes de caractères avec des lettres et des valeurs de composé de numéros seulement. Les valeurs de chaîne sont récupérés sans problème, mais de pures valeurs numériques sont récupérées en tant que DBNull
.
Comment le résoudre?
- Je utiliser 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\""
OriginalL'auteur flashnik | 2010-07-08
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé de la documentation sur le site de Microsoft qui s'applique à votre scénario. Ils recommandent la conversion de toutes les valeurs numériques en chaînes.
http://support.microsoft.com/kb/257819
Comme indiqué précédemment, l'ADO doit déterminer le type de données pour chaque colonne de votre feuille de calcul Excel ou de la plage. (Ce n'est pas affectée par cellule Excel paramètres de mise en forme.) Un grave problème peut se produire si vous avez les valeurs numériques des textes des valeurs dans la même colonne. À la fois le Jet et le Fournisseur ODBC renvoyer les données de la majorité, mais de retourner la valeur NULL (vide) les valeurs de la minorité type de données. Si les deux types sont également mélangés dans la colonne, le fournisseur choisit numérique sur le texte.
Par exemple:
IMEX=1
à appliquer en mode texte (j'ai besoin de récupérer ces cellules sous forme de texte non numériques), mais il n'a pas aidé. Il est impossible de rentrer les valeurs en mode texte, parce qu'il n'y sont pour beaucoup d'entre eux. Est-il possible de l'automatiser en quelque sorte?Que faire si vous essayez cette suggestion de l'aide d'une requête au lieu de direct de table/nom de la feuille? Léger inconvénient, c'est que toutes les colonnes apparaissent comme des cordes alors. munishbansal.wordpress.com/2009/12/15/...
OriginalL'auteur jdot
J'ai le même problème mais avec les valeurs de chaîne. Des valeurs numériques sont retournés, mais les valeurs de chaîne sont retournées NULL. Je veux charger les valeurs numériques de la chaîne de valeurs. La colonne peut contenir que des chiffres et non des codes numériques (exemple: 100344567 et PRD001X01).
Le pilote Excel considère que la colonne est de type numérique, car les valeurs dans les 8 premières lignes sont de type numérique.
Même si je définis les cellules sous forme de Texte (Format de Cellule), il ne fonctionne pas.
À forcer le pilote à "voir" la colonne en tant que chaîne de caractères, j'ai simplement mis une citation devant de la valeur numérique ('100344567). Cela transforme la valeur numérique en une chaîne de caractères.
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 ça aidera.
OriginalL'auteur Augusto