2009-04-28 7 views
3

Une de mes collègues a un document XML qu'elle ouvre dans Excel 2007 en utilisant «Obtenir des données externes/depuis l'importation de données XML». Excel mappe le XML aux colonnes automatiquement.Excel: données XML mappées et erreur «nombre stocké en tant que texte»

Cependant, certains éléments stocker des données numériques, qui Excel refuse de traiter comme un numéro:

<SOME_NUMBER>68.12</SOME_NUMBER> 

Au lieu de cela, la cellule affiche le « numéro enregistré sous forme de texte » erreur.

Actuellement aucun schéma XML n'est attaché au document, et je voudrais éviter d'en créer un, si possible. Quelles autres options y a-t-il?

P.S .: Essayer différents paramètres régionaux a échoué. Les données semblent toujours être considérées comme du texte.

+0

le cadre régional était quelque chose qui est arrivé à mon esprit que les chiffres peuvent être stockés soit en tant que 68.12 ou 68,12 selon la région, mais je comprends que vous avez déjà exploré cette option – kristof

Répondre

2

Je viens de voir ce (vieux) question et pensé que je pourrais toujours y répondre:

Quand vous dites « Actuellement aucun schéma XML est joint au document » vous n'êtes pas tout à fait correct. Il y a toujours un schéma XML bien que la plupart du temps implicitement créé pour vous par Excel. En extrayant et en adaptant ce schéma - ce n'est pas trop difficile - vous pourriez obtenir le résultat le plus facile.

Un indice sur la façon de le faire (dans cet exemple, le problème était une date-terrain): Exporting XML from Excel and Keeping Date Format

+0

Ceci est la solution. J'ai fini par faire les choses différemment, mais c'est une excellente information. Merci! – Tomalak

0

Eh bien, vous pouvez simplement sélectionner les cellules, cliquez à droite, les cellules de format, Modifier le type de format "Nombre"

EDIT

En utilisant ce code XML test de fichier

<NODES> 
<A> 
    <B>1.23</B> 
    <C>2.34</C> 
    <D>3.45</D> 
    <SOME_NUMBER>ASDF</SOME_NUMBER> 
</A> 
<A> 
    <B>1.23</B> 
    <C>2.34</C> 
    <D>3.45</D> 
    <SOME_NUMBER>4.56</SOME_NUMBER> 
</A> 
<A> 
    <B>1.23</B> 
    <C>2.34</C> 
    <D>3.45</D> 
    <SOME_NUMBER>4.56</SOME_NUMBER> 
</A> 
</NODES> 

Tous les colonnes apparaissent en tant que nombres à l'exception des deux autres SOME_NUMBER car du texte de la colonne initiale

Donc je sélectionne ces deux cellules, mettez en surbrillance la case d'erreur (signe d'exclamation) et choisissez la deuxième option "Convert To Number"

La chose des cellules de format semble être un peu stupide en ce sens qu'elle ne s'applique pas le formatage à une cellule avec une erreur sur elle, jusqu'à ce que vous cliquiez dans la cellule

+0

Correction manuelle de l'erreur est possible, mais pas réalisable. ;-) Le fichier est plutôt volumineux, et si je comprends bien, vous devrez le faire séparément pour chaque cellule. Le fichier ne peut pas avoir de chaînes dans les éléments numériques, il est généré par la base de données.Il ne contiendra pas non plus d'éléments vides, seulement la valeur 0. Je suspecte toujours les paramètres régionaux/les paramètres régionaux du système d'être impliqués dans cette affaire ... – Tomalak

0

Je crois que la mise en forme des cellules par défaut s'applique à toute la colonne, donc peut-être dans votre exemple certaines instances de texte ou de numéro de magasin, mais dans les quotas comme "1.5" donc le formatage du texte par défaut.

Lorsque j'ai testé l'importation de données XML il forme toutes les colonnes de texte en texte, et les colonnes numériques au général

+0

Fait intéressant, si tout (ou au moins le top n) contient un non-fractionnaire nombre, ou 0, Excel interprète correctement la colonne comme numérique. Si une valeur fractionnaire comme "68.12" est contenue (je suis en Allemagne, où cela serait écrit comme "68,12"), Excel commence à traiter comme une chaîne, montrant l'erreur. Au moins, la définition des paramètres régionaux de l'utilisateur pour l'anglais américain n'a pas fait de différence - je vais essayer de changer les paramètres régionaux du système. – Tomalak

+0

En fait, c'est faux. Je viens de découvrir Excel ne montre pas une erreur pour la valeur "0". Mais la valeur est affichée comme alignée à gauche, indiquant qu'elle est traitée comme une chaîne. – Tomalak

0

Je sens votre douleur, j'ai eu le même problème depuis des années. C'est la seule solution que j'ai trouvée.

Function ConvertText2Num(RangeToConvert As Range) 
    RangeToConvert.ClearFormats 
    RangeToConvert.TextToColumns 
End Function 
Questions connexes