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

Windows Forms Discussion :

StreamWriter - Encoding - Ecrire dans fichiers avec accents ?


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut StreamWriter - Encoding - Ecrire dans fichiers avec accents ?
    Bonjour,

    J'ai créé une fonctionnalité d'exportation d'une listView vers un fichier CSV (pour lecture dans Excel).

    J'exporte grâce à un StreamWriter, dont je défini l'Encoding.

    J'ai cependant un problème avec les accents lorsque j'ouvre le fichier avec EXCEL.
    Cependant avec NOTEPAD, la lecture des accents se fait correctement !

    Voici les différents tests effectués :
    Encoding.Default
    NOTEPAD : Votre système...
    Excel : Votre système...

    Encoding.UTF8
    NOTEPAD : Votre système...
    Excel : Votre système... + Agencement incorrect des données dans les cellules.

    Encoding.ASCII
    NOTEPAD : Votre système...
    Excel : Votre syst?me...



    Ma question n'est pas COMMENT résoudre le problème en remplaçant par des caractères non accentués, non. Ma question est de savoir s'il existe un moyen de CONSERVER ces accents et qu'ils soient correctement interpretés par EXCEL. Est-ce possible ?


    (propriété du fichier ? écriture en fichier binaire ? ... ?)

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut
    Je viens d'ouvrir le fichier qui a été enregistré en Encoding.Default avec NOTEPAD.

    J'ai ensuite enregistré le fichier tel quel mais en spécifiant LE CODAGE DANS NOTEPAD en le mettant sur ANSI.

    Désormais les caractères accentués sont visibles dans EXCEL.

    Mais existe-t-il un type d'encodage ou une manière de faire en .NET C# pour spécifier l'encodage en ANSI ?

    Est-ce que ce codage est fiable ?

  3. #3
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Essaye Encoding.GetEncoding(1252). La page de code 1252 correspond à l'encodage Windows pour les langues d'Europe de l'Ouest.

    Sur MSDN, il est dit à propos de l'encodage ANSI :
    Les pages de codes ANSI peuvent être différentes sur des ordinateurs distincts ou être modifiées pour un seul ordinateur, ce qui provoque une altération des données. Pour obtenir les résultats les plus cohérents, les applications doivent utiliser le format Unicode, tel que UTF-8 (page de codes 65001) ou UTF-16, au lieu d'une page de codes spécifique.
    Pour plus d'informations sur l'encodage des caractères voir ce lien.

  4. #4
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Points : 106
    Points
    106
    Par défaut
    J'allais éditer le post. Je suis tombé sur l'info après avoir été sur MSDN.

    Merci beaucoup !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    Super! Un an plus tard et ça sert encore à des gens comme moi!

  6. #6
    Membre à l'essai
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    33
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Je sais que ça fait un moment que le sujet est "abandonné" mais je
    rencontre actuellement le même problème !! J'ai compris le principe de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encoding.getEncoding(65001);
    mais je n'arrive pas à le faire fonctionner Lorsque j'ouvre mon .csv
    avec Excel, il n'affiche pas bien les accents alors qu'avec NotePad++ c'est nikél !

    Donc y'aurait il quelqu'un pour me dire où "placer" et comment utiliser cette ligne de code

    Merci d'avance

  7. #7
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par clem5-9 Voir le message
    Donc y'aurait il quelqu'un pour me dire où "placer" et comment utiliser cette ligne de code
    Peux-tu nous montrer ton code, pour que l'on puisse te dire où le placer ?

  8. #8
    Membre à l'essai
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    33
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Voici la fonction qui "construit" le fichier csv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    protected void createCSV(System.Data.DataTable dtTemp)
        {
            string contenu = "";
     
            foreach (DataColumn dc in dtTemp.Columns)
            {
                contenu += dc.ColumnName + "; ";
            }
     
            // On passe à la ligne et on saute une ligne
            contenu += Environment.NewLine;
            contenu += Environment.NewLine;
     
            foreach (DataRow dr in dtTemp.Rows)
            {
                foreach (DataColumn dc in dtTemp.Columns)
                {
                    contenu += dr[dc.ColumnName] + "; ";
                }
                // On passe à la ligne après avoir parcouru la ligne entière
                contenu += Environment.NewLine;
            }
     
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ClearHeaders();
            HttpContext.Current.Response.ClearContent();
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=Resultat_Recherche.csv");
            HttpContext.Current.Response.ContentType = "text/csv";
            HttpContext.Current.Response.Write(contenu);
            HttpContext.Current.Response.End();
     
        }

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 14
    Points
    14
    Par défaut Super réponse de Skalp
    Super réponse de Skalp

    Même 3 ans aprés ça sert toujours et en plus ça marche nickel.

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

Discussions similaires

  1. Import fichier avec accents dans table
    Par Pr3ToriA dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/07/2011, 09h45
  2. Réponses: 7
    Dernier message: 31/03/2011, 11h59
  3. Ecrire dans fichier avec Log4Net
    Par cd090580 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/12/2010, 17h01
  4. Réponses: 5
    Dernier message: 11/07/2010, 14h07
  5. [Débutant][JFileChooser] Ecrire dans fichier
    Par Clark dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 16/05/2005, 17h47

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