Export datagridview vers csv, problème TRES BIZARRE

Résolu
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 - 17 mars 2008 à 21:39
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;
            }
        }

2 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
19 mars 2008 à 13:47
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..."
3
ericdu93 Messages postés 56 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 28 août 2008 1
19 mars 2008 à 16:22
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.
0
Rejoignez-nous