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

 .NET Discussion :

Génération fichier csv pb avec ";"


Sujet :

.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut Génération fichier csv pb avec ";"
    Bonjour,

    Je génère un fichier csv à partir de données venant de la bdd de mon application.

    Le problème est que quand j'ai des données comme par exemple donnee1 qui est égale à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cette chaîne fait ";" complètement planter la génération  de mon csv
    Le fait que la donnée récupérée a ";" dans sa chaine est interprété comme une nouvelle colonne dans ma génération csv

    En gros la génération se fait en simplifiant pour l'instant comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    StreamWriter flux = new StreamWriter("D:\\essai.csv", false, System.Text.Encoding.Default);
    ...
    string ligne="";
     
    ligne = ligne + donnee1 + ";";
    ligne = ligne + donnee2 + ";";
    ligne = ligne + donnee3 + ";";
    ligne = ligne + donnee4 + ";";
    ....
    flux .Write(VLST_LIGNE);
    flux .Close();
    ...
    Comment faire en sorte que peu importe ce que contient la chaîne, celle ci soit interprété comme une colonne ?
    Pour l'instant je me retrouve avec plusieurs colonnes pour une même donnée(donnée tronquée sur plusieurs colonnes) ce qui est complètement incorrect.

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 161
    Par défaut
    Mon problème n'est pas à chaque fois que je rencontre ;
    Car si j'ai cette chaîne par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cette chaîne fait ; complètement planter la génération  de mon csv
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cette chaîne fait ";" complètement planter la génération  de mon csv
    J'ai mis un mécanisme qui marche en place du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = ligne + "\""+donnee1 +"\""+ ";";
    ce qui permet dans ce cas d'échapper au fait que le ; soit reconnu comme le délimiteur pour la création d'une nouvelle colonne.

    Mon problème est quand ce délimiteur ; se trouve dans une des données entre guillemets comme dans la chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cette chaîne fait ";" complètement planter la génération  de mon csv
    Je ne vois pas comment réussir à restituer cette donnée sans la modifier.
    Mon problème étant que lorsqu'on ouvre le csv dans excel il faut que dans ma colonne donnee1 j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cette chaîne fait ";" complètement planter la génération  de mon csv
    et pas autre chose


    Merci pour vos conseils.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah regarde comment ce genre de cas est traité par Excel par exemple...
    Enregistre en CSV une feuille de calcul avec une cellule qui contient ";", et regarde le résultat dans un éditeur de texte pour voir comment il encode ça

  4. #4
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    À lire http://fr.wikipedia.org/wiki/Comma-separated_values
    On doit ajouter les délimiteurs au début et en fin de chaine s'il y a au moins le caractère de séparation dans la chaine, et il faut doubler les délimiteurs de texte rencontrés dans la chaine.
    En france, le délimiteur est souvent le " et le séparateur le ;

    Conseil: String.Join(séprateur, valeurs[]) se chargera de mettre les séparateurs facilement.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2012, 16h41
  2. Génération fichier .csv via une requête SQL
    Par matnys dans le forum Import/Export
    Réponses: 5
    Dernier message: 12/12/2011, 22h03
  3. Lire un fichier CSV envoyé avec une requête POST
    Par Marm B dans le forum Langage
    Réponses: 6
    Dernier message: 26/08/2009, 13h31
  4. Génération fichier csv problème accent
    Par marion782 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/08/2009, 09h16
  5. Réponses: 11
    Dernier message: 27/10/2008, 09h15

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