Export datagridview vers csv, problème TRES BIZARRE [Résolu]

Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
- - Dernière réponse : ericdu93
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
- 19 mars 2008 à 16:22
Bonjour,

en utilisant le code d'exportation d'une datatable vers csv de la page suivante:
http://www.csharpfr.com/codes/CSVSHARP-DLL-IMPORT-EXPORT-CONTENU-FORMAT-CSV_45466.aspx#

j'obtiens bien mon fichier csv avec les points virgules. Le problème c'est que lorsque j'ouvre dans excel 2007, tout apparaît dans une seul colonne, comme ca

Colonne A:
toto;toto;titi
tata;tptp;tutu

Colonne B:
(rien)

Par contre si je fais un copier coller du contenu de ce fichier csv dans un nouveau fichier que j'aurai créer à la main et que je colle la dedans en renommant le fichier en .csv et que je réouvre avec Excel, alors les données sont bien séparées dans les différentes colonnes.

Ce n'est pas normal, avez vous une explication ?

Merci d'avance.

PS: je vous copie colle le code qui exporte la datatable vers csv:

public void CreateCSVFromDataTable(DataTable dt, bool WriteHeaders)
        {
            try
            {
                // Create the CSV file to which grid data will be exported.
                StreamWriter sw = new StreamWriter(this.FileName, false, Encoding.Unicode);
                int ColumnsCount = dt.Columns.Count;

                #region Write the headers

                // If required, write the headers.
                if (WriteHeaders)
                {
                    for (int i = 0; i < ColumnsCount; i++)
                    {
                        if(this.HeaderToCapitalLetters)
                            sw.Write(dt.Columns[i].ToString().ToUpper()); // TO MAKE IN UCASE
                        else
                            sw.Write(dt.Columns[i]);

                        if (i < ColumnsCount - 1)
                        {
                            sw.Write(GetSeparator());
                        }
                    }
                    sw.Write(sw.NewLine);
                }

                #endregion

                #region Check Table Content Separator Conflicts

                if (this.CheckTableContentSeparatorConflicts)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        foreach (object dc in dr.ItemArray)
                        {
                            if (Convert.ToString(dc).Contains(GetSeparator().ToString()))
                                throw new CSVDataTableConflictsException("Le contenu de la table n'est pas compatible avec le séparateur choisi : '" + GetSeparator() + "'.");
                        }
                    }
                }

                #endregion

                #region Write the rows

                // Write all the rows.
                foreach (DataRow dr in dt.Rows)
                {
                    for (int i = 0; i < ColumnsCount; i++)
                    {
                        if (!Convert.IsDBNull(dr[i]))
                        {
                            sw.Write(dr[i].ToString());
                        }
                        if (i < ColumnsCount - 1)
                        {
                            sw.Write(GetSeparator());
                        }
                    }
                    sw.Write(sw.NewLine);
                }

                #endregion

                sw.Close();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
3
Merci
l'assitant d'ouverture de fichier csv ce lance pas a l'ouverture du csv ??

je ne pense pas que le pb vient de ton fichier csv, mais de la maniere par laquel tu ouvre ce csv sous excel
(deja eu ce pb)
pour le resoudre, lance excel, fais ficheir ouvrir et cherche ton csv
du coup un assistant doit ce lancer

suivnat point virgule suivant suivnat et voila c'est fini

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 222 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Arthenius
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
1
0
Merci
okay, justement je me suis résolu à utiliser l'assistant pour résoudre ce souci de colonne.

J'ai fait des recherches sur le net, j'ai vu que ça pouvait être dû au format d'encodage, j'ai donc testé les différents formats (UTF8, unicode, UTF16) finalement ça n'a pas été concluant.

Merci pour ta réponse tout de même.
Commenter la réponse de ericdu93