IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Array vers fichier CSV


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Array vers fichier CSV
    Bonjour,

    Premièrement je m’excuse d’avance si je pose ma question dans le mauvais emplacement du forum. Comme c’est la première fois que je l’utilise, je suis encore un néophyte ! J’ai préalablement lu les règles d’usage et de bonne conduite pour tenter de comprendre et donc j’espère ne pas donner du fil à retordre aux modérateurs…
    Je suis un GROS débutant en JavaScript. Je m’y suis mis par obligation pour programmer des écrans dans le cadre de mon alternance.
    Ce que je veux actuellement faire c’est convertir un tableau de données (Array) sous forme d’un fichier CVS pour le lire sous exel. En farfouillant sur internet je suis tombé sur des usines à gaz bien trop compliquées pour moi, alors que ce que je veux faire est relativement simple. Et puis je suis tombé sur cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function arrayToSv(a, b)                                                {
      var s = '', i = 0, j = a.length,
          c = (b && b.columnDelimiter) ? b.columnDelimiter : ';',
          l = (b && b.lineDelimiter) ? b.lineDelimiter : '\n';
     
    for (; i < j; i++)                                    {
        s += ((s !== '') ? l : '') + a[i].join(c);
                                                               }
     
    return s;
                                                                                         }
    Elle m’a plu car elle est courte. Sauf que bémol, je ne comprend rien à cette ligne de code : s += ((s !== '') ? l : '') + a[i].join(c);
    En testant la fonction j’ai donc constaté que le premier élément du tableau fait office d’entête dans le fichier CSV, ce que je ne veux pas…
    J’ai donc tenté de modifier le code pour enlever le fait que le premier élément de mon tableau soit l’entête du fichier CSV, mais comme vous vous en doutez je n’y suis pas parvenu !

    Voici donc mes demandes / questions :
    - pourriez vous me décortiquer et m’expliquer cette ligne de code : s += ((s !== '') ? l : '') + a[i].join(c); -> ligne de code qui est visiblement le cœur de la fonction.
    - pourriez me proposer une alternative (même plus longue en code) pour ne pas avoir d’en-tête, tout en conservant la structure de la fonction ?

    Merci d’avance et je vous souhaite une bonne journée.

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    Voici pour l'explication, on va diviser la ligne en 3 explications, ça sera plus simple :

    ((s !== '') ? l : '') en gros, on regarde si on a déjà un début de données. Si c'est le cas, on va précéder notre valeur par le délimiteur de de ligne (l = Line Delimiter)
    a[i].join(c) on va récupérer toutes les valeurs de notre array (a[i]) et les "unir" (join()) en utilisant un "paramètre glue" (c = Column Delimiter). C'est un peu comme si on collait des planches de bois : on ne met la colle que entre les planches et pas à l'extérieur. C'est à ça que sert le paramètre glue. Donc si on choisi le délimiteur de colonne en tant que ; on aura : A;B;C.
    s += est l'équivalent de s = s + "mon string à ajouter à la suite";.

    Ce que je ne comprends pas, c'est l'idée d'en-tête.
    L'en-tête c'est juste une disposition limite visuelle mais ça n'existe pas en .CSV vu qu'il s'agit de données brutes.
    La chose qui défini une en-tête c'est la lecture des données. Est-ce que vous commencez à lire les lignes à 0 ou à 1 ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2021
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Déjà merci pour votre rapidité !

    Effectivement je commençais à lire à la ligne 1... donc je perdais le premier élément ! En recopiant la fonction dans mon logiciel, j'ai fait commencé l'index i à 1...
    C'est votre explication sur ce qu'est réellement un fichier CSV qui m'a mis la puce à l'oreille.

    Désolé d'avoir occupé un emplacement sur le forum pour une broutille pareille.

    Je vous remercie et vous souhaite une très bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exporter une <table> vers fichier CSV
    Par sebhm dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 17/04/2014, 15h33
  2. [AC-2007] PB Export vers fichier .csv
    Par Daniel-Gérald dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/11/2011, 10h54
  3. Export vers fichier csv d'un grid
    Par Tiolebucheron dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 18/07/2010, 21h35
  4. Traitement de logs apache vers fichier CSV
    Par GTJuanpablo dans le forum Langage
    Réponses: 3
    Dernier message: 22/04/2009, 15h14
  5. [A-03] Export vers fichier CSV (format)
    Par Pownee dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/02/2009, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo