Convertir une valeur numérique en chaine de caractère en utf-8
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Convertir une valeur numérique en chaine de caractère en utf-8



  1. #1
    invitefb0abd7b

    Convertir une valeur numérique en chaine de caractère en utf-8


    ------

    Bonjour,

    Je travaille actuellement sur un fichier XML contenant des données que je veux exporter sur MS Excel.
    Je rencontre un soucis, car ce fichier contient des nombres avec 18 chiffres. Or Excel tronque ces nombres puisque qu'il n'accepte des nombres qu'avec au maximum 15 digits.

    J'ai testé en mettant une apostrophe devant le nombre sur le fichier XML et lors de l'exportation ça fonctionne, car la valeur est détectée comme chaine de caractère. Cependant cela n'est pas envisageable car ces données sont ensuite traitées.

    Je pensais à modifier directement dans le fichier XML le format de ma valeur, mais je ne connais pas le code correspondant ni même si cela est possible.

    Voici un aperçu du fichier XML avec le nombre à 18 digits :

    Nom : code.jpg
Affichages : 234
Taille : 5,5 Ko

    S'il est possible de rajouter un truc avant ou après cette valeur de nombre afin de le transformer en chaine de caractère, mon problème d'importation serait résolu.

    En espérant que vous puissiez m'apporter une réponse, je vous remercie d'avance.

    Bien cordialement,

    MA

    -----

  2. #2
    minushabens

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    Est-ce que ça n'est pas plutôt à excel qu'il faut dire de lire ces champs sans les interpréter?

    mais je ne comprends pas bien ton problème: si tu dois faire des calculs sous excel sur ces nombres et si excel ne les lit pas bien, qu'est-ce que tu vas gagner en les traitant comme des chaînes de caractères?

  3. #3
    Spazi

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    Si vous devez faire des traitements dans Excel, vous n'avez pas beaucoup d'autre solution que de stocker votre valeur en texte dans la cellule, et faire les calculs en macro vba, en convertissant vous même le texte en entier 64bits. Sans oublier de réafficher le résultat en texte également, sinon retronquage par Excel.

    Et pour stocker en texte, vous avez déjà trouver qu'il faut mettre un apostrophe devant.

    Donc, où est votre problème au niveau des traitements ?
    Dernière modification par Spazi ; 28/03/2018 à 17h40.

  4. #4
    invitefb0abd7b

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    Excel tronque systématiquement le nombre même si j'ai déjà affecté la cellule au format texte. C'est au moment de l'importation, c'est un nombre pour Excel, avant même qu'il soit affecté à la cellule.
    Comme je l'ai dit Excel peut l'interpréter comme chaîne de caractère en ajoutant une apostrophe sur le fichier XML, car cette apostrophe change le format sur XML en chaîne de caractère. Mais n'est il pas possible de faire cela sans avoir à y introduire une apostrophe pour le forcer à passer d'un format numérique a une chaîne de caractère?

  5. A voir en vidéo sur Futura
  6. #5
    Spazi

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    Besoin de plus d'information.
    Avez-vous modifié dans Excel la requête après l'import pour forcer la lecture en string ?
    Quel version d'Excel et comment importez-vous ?

    J'ai fait comme suis pour un import XML standard sous Excel2018 : après l'import, dans l'onglet "Outil de requête/Requête" > je vais dans "Modifier" > "Editeur avancé" > Dans l'appel à TransformColumnTypes(..) je modifie le type de la colonne de "type number" en "type text". Terminer, Fermer & charger, et c'est bon, j'ai tous les chiffres. ( Je sais pas pourquoi je vais toujours en mode avancé => dans l'éditeur de requête sélectionnez la colonne avec votre nombre, et modifier directement le type de données dans "Transformer" )
    Dernière modification par Spazi ; 28/03/2018 à 19h01.

  7. #6
    invitefb0abd7b

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    Bonjour,

    Tout d'abord j'utilise le volet de tâches Source XML (en faisant glisser le fichier XML sur une page Excel vierge). Puis je fais glisser du volet sur la fenêtre Excel ce que je souhaite afficher comme données. Cela crée un tableau vide. Je clique droit ensuite sur le tableau sélectionné, puis XML>Importer.
    Si je modifie le format de la colonne avant importation, en l'obligeant d'être de type Texte, le nombre va s'afficher complet mais les 4 derniers chiffres seront des 0, car il aura quand même été importé au départ du fichier XML comme un nombre, de type 1,**************E+17 et Excel arrondi à partir de 15ème digit car plus pris en compte en lecture de donnée nombre.
    Sinon, je travaille sur Excel 2016.
    Je vous remercie.

  8. #7
    minushabens

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    tiens j'ai trouvé ça : http://techsupport.matomy.com/Report...l-CSV-file.htm

    sinon à mon avis la meilleure solution est de se passer d'excel (il n'est pas sur mon ordi et je passe ma vie à manipuler des chiffres)

  9. #8
    Spazi

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    En important votre XML comme ceci, Excel crée un schéma XML automatiquement. C'est ce schéma qui déclare votre valeur comme numérique et est la source de votre problème. Vous pouvez faire votre propre schéma déclarant la valeur comme string, ou extraire celui fait par excel, le modifier, et réimporter :

    En VBA dans la feuil, executez :
    Code:
    Public Sub test()
    Open "C:\Temp\tempxml.xsd" For Output As #1
       Print #1, ActiveWorkbook.XmlMaps(1).Schemas(1).XML
       Close #1
    End Sub
    Modifiez celui-ci (pour une rapide copie de votre exemple, j'obtenais quelque part
    Code:
    <xsd:element minOccurs="0" nillable="true" name="Content" form="unqualified"><xsd:complexType><xsd:simpleContent><xsd:extension base="xsd:integer">
    Il me suffisait de remplacer "integer" par "string")

    Réimportez ce mappage; Dans "Source XML", vous devriez avoir "Mappage XML", ajoutez le nouveau.

    Puis sélectionnez le et continuez votre importation comme vous le faisiez d'habitude (déplacez la colonne souhaitez, etc)

  10. #9
    polo974

    Re : Convertir une valeur numérique en chaine de caractère en utf-8

    la limitation à 15 digit s'explique par le format des nombres flottants (ici double (le float simple étant trèèès limité)).

    donc si entre dans une cellule '12345678901234567889, on a le texte exact mais pas le nombre
    dans la cellule à coté, on peut mettre =<cellule contenant le texte> + 0 (on se comprend pour <cellule contenant le texte>...)
    (en tout cas, ça marche comme ça avec libre-office)
    et on obtient un nombre flottant approchant (1,23456789012346E+018 ou 1234567890123460000 selon l'affichage).

    on ne peut pas éviter de perdre de la précision quand on travaille avec des flottants.

    si on ne peut se permettre une perte de précision, il faut passer par des librairies spécialisées, mais ce n'est pas prévu dans les tableurs.
    Jusqu'ici tout va bien...

Discussions similaires

  1. [C] chaine de caractère.
    Par invite38d9e885 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 26/12/2015, 11h05
  2. Réponses: 5
    Dernier message: 28/03/2015, 17h03
  3. [C] Concaténer chaine de caractère + caractère
    Par invite48ca7510 dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 26/01/2013, 11h43
  4. chaîne de caractère
    Par invite9c4bf030 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 02/04/2012, 19h30
  5. Chaine de caractère C++
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 06/03/2008, 20h29