Dernière mise à jour le 30/04/17

Présentation



Dans ce présent article, Nous allons voir comment envoyer des données d’un DataGridView dans un tableur Excel en utilisant uniquement 3 colonnes (Colonne 1, Colonne 2, Colonne3) du DataGridView.
Chaques données rentrées dans le tableau du DataGridView seront envoyées dans un tableur Excel en respectant la mise en forme.
Une petite vidéo disponible afin de mieux comprendre est disponible dans la rubrique “Prototype” ainsi que la programmation en C#.




Programmation en C#


Avant de commencer la programmation en C# il faut avant tout ajouter la référence Microsoft Excel pour que Visual Studio puisse communiquer avec Excel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;


namespace WindowsFormsApplication1
{

    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1.CurrentCell.Style.BackColor = Color.LightGreen;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.RowHeadersVisible = false; // on modifie l'aspect du tableau
            dataGridView1.ColumnCount = 3; // ajouter 3 colonnes afin de placer les lignes dans chaque colonnes
            dataGridView1.Columns[0].Name = "Colonne 1"; // colonne 1
            dataGridView1.Columns[1].Name = "Colonne 2"; // colonne 2
            dataGridView1.Columns[2].Name = "Colonne 3"; // colonne 3
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var excelApp = new Excel.Application();

            excelApp.Visible = true;

            Excel._Worksheet workBooks = (Excel.Worksheet)excelApp.ActiveSheet;

            //Ouverture du fichier Excel, à vous de choisir l'emplacement ou est situé le fichier excel ainsi que son nom!!

            Microsoft.Office.Interop.Excel._Workbook workbook = excelApp.Workbooks.Open(@"C:\Users\Julien\Desktop\Classeur1.xlsx");

            workBooks = workbook.Sheets["Feuil1"]; // On sélectionne la Feuil1

            workBooks = workbook.ActiveSheet;

            workBooks.Name = "Electronique71.com"; // on renomme la Feuil1 

            dataGridView1.RowHeadersVisible = false;

            for (int Rows = 1; Rows < dataGridView1.Columns.Count + 1; Rows++)
            {
                workBooks.Cells[1, Rows] = dataGridView1.Columns[Rows - 1].HeaderText;
            }

            // on recopie toutes les valeurs du DataGridView dans le fichier Excel

            for (int Rows = 0; Rows < dataGridView1.Rows.Count - 1; Rows++)
            {

                for (int Columns = 0; Columns < dataGridView1.Columns.Count; Columns++)
                {

                    workBooks.Cells[Rows + 2, Columns + 1] = dataGridView1.Rows[Rows].Cells[Columns].Value;

                }

            }

            // sauvegarde du fichier Excel (volontairement j'ai créer un dossier sur le bureau nommé Electronique71 
            // puis dans ce dossier j'ai renommé le classeur Excel "Classeur1.xlsx" sous le nom "Fichier")

            workbook.SaveAs(@"C:\Users\Julien\Desktop\Electronique71\Fichier", 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, 
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            // Fermeture de l'application Excel
            excelApp.Quit();
        }   
    }
}

Prototype en vidéo


Dans ce prototype je vais créer un classeur que je vais nommer “Classeur1.xlsx” puis je vais créer un dossier nommé “Fichier”, ensuite le reste sera exécuté par la programmation en C#

Historiques


30/04/17
– Première mise à disposition