Datagridview (vue SQL) à exporter en fichier TXT... comment faire ?

Signaler
Messages postés
2
Date d'inscription
vendredi 13 juillet 2007
Statut
Membre
Dernière intervention
26 juin 2008
-
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
-
Bonjour,

Je cherche à exporter le contenu q'une datagridview contenant le résultat d'une view sql server vers un fichier texte.
Je précise que j'ai fait au plus simple pour incorporer ce datagridview dans un form en faisant un glisser-déposer depuis la barre "source de données" => création automatique d'un DataSet, d'un TableAdapter & d'un BindingNavigator.
Je me demande si c'était la meilleure méthode ou si je devais incorporer un datarid/datagridview "vierge" que je chargerai via un événement type "choix par menu". Ce datagrid me sert à prévisualiser le résultat de la requête sql avant de lancer l'export en TXT via un bouton.

Merci par avance pour votre aide.

3 réponses

Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Et si par exemple, tu utilisais un StreamWriter et que tu parcourais les rows de ta DGV avec une boucle.

Allez un petit effort.
Messages postés
2
Date d'inscription
vendredi 13 juillet 2007
Statut
Membre
Dernière intervention
26 juin 2008

Méthode déja essayé mais j'ai du oublier quelque chose au niveau syntaxe...
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Tiens c'est le code que j'ai écris pour un de mes programmes:

/// <summary>
        /// Export DGV datas to CSV format
        /// </summary>
        ///

        ///

        /// <returns>True on success, false upon failure</returns>
        public static bool exportDGV(DataGridView dgv, string fileName)
        {
            try
            {
                using (StreamWriter sw = new StreamWriter(fileName))
                {
                    //write column headers
                    string line = "";
                    for (int i = 0; i < dgv.Columns.Count; i++ )
                    {
                        if (dgv.Columns[i].Visible)
                            line += Tools.escapeCSVString(dgv.Columns[i].HeaderText) + ",";
                    }
                    line = line.TrimEnd(',');
                    sw.WriteLine(line);

                    //write data
                    for (int i = 0; i < dgv.Rows.Count; i++)
                    {
                        line = "";
                        for (int j = 0; j < dgv.Columns.Count; j++)
                        {
                            if (dgv.Columns[j].Visible)
                            {
                                line += Tools.escapeCSVString(dgv[j, i].FormattedValue.ToString()) + ",";
                            }
                        }
                        line = line.TrimEnd(',');
                        sw.WriteLine(line);
                    }
                }

                return true;
            }
            catch
            {
                return false;
            }
        }

/// <summary>
        /// Escape a string to respect RFC 4180 standard
        /// </summary>
        ///

        /// <returns></returns>
        public static string escapeCSVString(string s)
        {
            if (s.Contains(","))
            {
                s = s.Replace(""", """");
                s = """ + s + """;
                return s;
            }
            else
            {
                return s;
            }
        }