IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Exporter datagrid to excel


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut Exporter datagrid to excel
    Bonjour, j'ai exporté un datagridview a un fichier excel, je souhaite embellir ce tableau de la datagrid sur le fichier excel (bourdure et couleur d'entete); une idée svp ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Comment tu as exporté ta datagrid vers Excel ? Interop ou bibliothèque tierce ?
    Parce que si tu ne connais pas EEPlus, voici un exemple de ce que tu demandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DataTable dt;
    //on remplit dt ...
    ExcelPackage pck = new ExcelPackage(new FileInfo(xlsxFilePath);)
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Feuil1");
    ws.Cells["A1"].LoadFromDataTable(dt, false, OfficeOpenXml.Table.TableStyles.Light20);
    pck.Save();
    Le contenu de la datatable dt est dans une .xlsx, à partir de la cellule A1, le tout dans un tableau qui alterne les lignes sur fond bleu pastelle ! Et sans avoir besoin d'excel...
    Bien sur on peut également rajouter du formatage manuel.

    J@ck.

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    private void ExporterToExcel()
            {
                Excel._Application excel = new Excel.Application();
                Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
                Excel._Worksheet worksheet = null;
     
                try
                {
                    worksheet = workbook.ActiveSheet;
                    worksheet.Name = "EtatAOs_" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year;
     
                    worksheet.Rows.HorizontalAlignment = HorizontalAlignment.Center;
     
                    int cellRowIndex = 1;
                    int cellColumnIndex = 1;
     
                    for (int i = 0; i < dgRésultatRecherche.Rows.Count - 1; i++)
                    {
                        for (int j = 0; j < dgRésultatRecherche.Columns.Count - 1; j++)
                        {
                            Excel.Range range1 = (Excel.Range)worksheet.Cells[1, cellColumnIndex];
                            Excel.Range range2 = (Excel.Range)worksheet.Cells[cellRowIndex + 1, cellColumnIndex];
     
     
                            worksheet.Cells[1, cellColumnIndex] = dgRésultatRecherche.Columns[j].HeaderText;
     
                            DateTime myDate;
                            if (!DateTime.TryParse(dgRésultatRecherche.Rows[i].Cells[j].Value.ToString(), out myDate))
                            {
                                worksheet.Cells[cellRowIndex + 1, cellColumnIndex] = dgRésultatRecherche.Rows[i].Cells[j].Value.ToString();
                            }
                            else worksheet.Cells[cellRowIndex + 1, cellColumnIndex] = myDate;
     
                            range1.Interior.Color = System.Drawing.Color.LightBlue;
                            range1.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
                            range1.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black);
                            range2.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black);
     
                            cellColumnIndex++;
                        }
                        cellColumnIndex = 1;
                        cellRowIndex = cellRowIndex + 1;
                    }
     
                    worksheet.Cells.EntireColumn.AutoOutline();
     
                    SaveFileDialog saveDialog = new SaveFileDialog();
                    saveDialog.Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                    saveDialog.FilterIndex = 2;
     
                    workbook.SaveAs(@"C:\ModelesRapports\" + worksheet.Name);
     
                    OpenFileDialog openDialog = new OpenFileDialog();
                    openDialog.FileName = saveDialog.FileName;
                    openDialog.Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                    openDialog.FilterIndex = 1;
     
                    if (openDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        System.IO.StreamReader sr = new System.IO.StreamReader(openDialog.FileName);
                        MessageBox.Show(sr.ReadToEnd());
                        sr.Close();
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    excel.Quit();
                    workbook = null;
                    excel = null;
                }
            }
    j'ai réussi à faire ce que je veux sauf que quand je veux ouvrir le fichier que je viens de créer ca ne marche pas, merci de m'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    workbook.SaveAs(@"C:\ModelesRapports\" + worksheet.Name);
     
                    OpenFileDialog openDialog = new OpenFileDialog();
                    openDialog.FileName = saveDialog.FileName;
                    openDialog.Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                    openDialog.FilterIndex = 1;
     
                    if (openDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        System.IO.StreamReader sr = new System.IO.StreamReader(openDialog.FileName);
                        MessageBox.Show(sr.ReadToEnd());
                        sr.Close();
                    }

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Ok, donc c'est de l'interop.
    De mon expérience, la seule justification de continuer à utiliser de l'interop c'est d'avoir un excel antérieur à 2007, qui ne sait pas ouvrir de l'OfficeOpenXML, d'ailleurs je crois qu'Excel 2007 ne plus ou ne sera bientôt plus maintenu... Enfin bref on va dire que tu as un vieux code spaghetti a améliorer...

    Citation Envoyé par Msysteme Voir le message
    ca ne marche pas
    C'est à dire ? tu n'as pas la mise en forme ? tu as une Exception ? le fichier n'est pas créé ? ...

    le seul code que je vois qui concerne la mise en forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    range1.Interior.Color = System.Drawing.Color.LightBlue; 
    range1.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
    range1.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black);
    range2.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black);
    Comme ça je dirais que seul la 2ème ligne est fonctionnelle, puisque c'est la seule qui utilise une enum de Microsoft.Office.Interop.Excel
    J'ai donc listé vite fait ce namespace et je trouve ... Microsoft.Office.Interop.Excel.XlRgbColor.PleinDeTrucQuiResembleADesCouleurs

    A tester donc.
    Bon code,
    J@ck.

Discussions similaires

  1. [Débutant] Exporter DataGrid veers Excel C#
    Par Kagami dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/10/2013, 13h08
  2. Export datagrid vers Excel et checkbox
    Par urbanspike dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/07/2009, 20h08
  3. exporter datagrid dans excel
    Par joe12260 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/04/2008, 09h57
  4. exportation datagrid vers excel
    Par solid_sneak06 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 10/10/2007, 17h06
  5. Export Datagrid vers Excel
    Par DocCoinCoin dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/04/2007, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo