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

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

Votre réponse

2 réponses

Meilleure réponse
Arthenius
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Dernière intervention
6 septembre 2011
- 19 mars 2008 à 13:47
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..."

Merci Arthenius 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Arthenius
ericdu93
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Dernière intervention
28 août 2008
- 19 mars 2008 à 16:22
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.