Exporter un datagridview vers excel

Soyez le premier à donner votre avis sur cette source.

Snippet vu 43 324 fois - Téléchargée 27 fois

Contenu du snippet

Ce code permet d'exporter de manière simple un dataGridView vers Excel.
Il admet comme paramètre le nom du Contrôle dataGridView, le chemin vers un fichier excel de destination des données du dataGrid, et une chaine représentant l'en-tête du fichier excel généré.

Source / Exemple :


#region ExporterDataGridVersExcel Surchargé Type #1
        ///<summary>
        ///Permet d'exporter un DataGrid vers excel
        ///</summary>
        /// <param name="dgView">Data Grid Source des données à Exporter vers Excel</param>
        ///<param name="unFichier">Fichier Excel de destination des données</param>
        ///<param name="strEnteteDeFichier">Libellé de l'en-tête du fichier à générer</param>
        public void ExporterDataGridVersExcel(DataGridView dgView, String unFichier, string strEnteteDeFichier)
        {
            int i = 0;
            int j = 0;
            try
            {
                ExcelApplication excel = new ExcelApplication();
                Workbook exbook = (Workbook)excel.Workbooks.Add(Missing.Value);
                Worksheet exsheet = (Worksheet)excel.ActiveSheet;
                //Double[] Totaux= new Double[4];

                //Mise en forme de l'en-tête de la feuille Excel
                exsheet.Cells[1, 1] = strEnteteDeFichier;
                Range r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
                r.Interior.ColorIndex = XlColorIndex.xlColorIndexAutomatic;
                r.Font.Bold = true;
                r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, Missing.Value);
                r.EntireColumn.AutoFit();//Fin de la mise en forme de l'en-tête.

                foreach (DataGridViewColumn ch in dgView.Columns)
                {
                    r = exsheet.get_Range(Convert.ToChar(65 + i).ToString() + "1", Missing.Value);
                    exsheet.Cells[2, i + 1] = ch.Name.Trim();
                    r.Interior.ColorIndex = XlColorIndex.xlColorIndexAutomatic;
                    r.Font.Bold = true;
                    r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, Missing.Value);
                    r.EntireColumn.AutoFit();
                    i++;
                }
                j = 3;

                foreach (DataGridViewRow uneLigne in dgView.Rows)
                {
                    i = 1;
                    foreach (DataGridViewColumn uneColonne in dgView.Columns)
                    {
                        r = exsheet.get_Range(Convert.ToChar(65 + i - 1).ToString() + j.ToString(), Missing.Value);
                        exsheet.Cells[j, i] = "'" + uneLigne.Cells[uneColonne.Name].Value.ToString().Trim();
                        r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, Missing.Value);
                        r.EntireColumn.AutoFit();
                        i++;
                    }
                    exsheet.Columns.AutoFit();
                    j++;
                }
                exsheet.SaveAs(unFichier, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                excel.Quit();
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }//ExporterDataGridVersExcel
        #endregion //ExporterDataGridVersExcel

Conclusion :


Merci de l'améliorer et donner vos remarques.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
29
Date d'inscription
mercredi 10 décembre 2003
Statut
Membre
Dernière intervention
17 janvier 2012
2
@ingenieurA
string command = "mailto:info@codegain.com?subject=The CodeGain-Editor";
Process.Start(command);

la longueur de l'argument "command" ne doit pas dépasser 2080 caractère.
Messages postés
4
Date d'inscription
vendredi 19 décembre 2008
Statut
Membre
Dernière intervention
26 juin 2012

salut tout le monde s'il vous plait je un petit prog ou fonction qui me permet d'appeler outlook dans c# pour envoyer des mails??????????
Messages postés
117
Date d'inscription
dimanche 2 janvier 2011
Statut
Membre
Dernière intervention
25 mars 2011

je travaille dans visuel studio 2008 , mais il me souligne sur office sur tout les lignes , j'ai ajoute la ligne using ExcelApplication = Microsoft.Office.Interop.Excel.Application; mas il y a toujours l'erreur , quelqu'un peut m'aider ??
Messages postés
1
Date d'inscription
mercredi 2 mai 2007
Statut
Membre
Dernière intervention
13 mars 2009

Merci pour ce code et les commentaires.
Je veux juste rajouter que si on a plus de 26 colonnes dans la table, il y a l'erreur Message="Exception from HRESULT: 0x800A03EC".
Il faut revoir la commande "Convert.ToChar(65 + i).ToString()"
J'ai créé une fonction pour remplacer cette ligne de commande ( exemple: NomCellule(0)=A, NomCellule(26)=AA)

private string NomCellule(int i)
{
int resultat=0;
string retour_Char="";
while (i >= 0)
{
if (resultat != 0)
{
retour_Char =Convert.ToChar(65 + resultat-1).ToString();
i--;
}
if (i <= 25)
{
retour_Char = retour_Chaine + Convert.ToChar(65 + i).ToString();
break;
}
else //i>25
{
i = i - 25;
resultat++;
}
}
return retour_Char;
}
Messages postés
8
Date d'inscription
mercredi 12 avril 2006
Statut
Membre
Dernière intervention
25 mars 2009

Merci beaucoup pour ce code qui m'a beaucoup aidé, et merci également pour la discussion en dessous sur les références à ajouter !

Bonne journée
Afficher les 19 commentaires

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.