Exportar datos de un DataGridView a un fichero Excel en C#

WebProgramacion > Recursos sobre informática y tecnología > Programacion > C# > Exportar datos de un DataGridView a un fichero Excel en C#
C#
Autor: Dámaso Velázquez Álvarez

En el siguiente código veremos cómo exportar el contenido de un DataGridView a un fichero Excel con WindowsForms usando C#.

Inicialmente tendremos que añadir la siguiente referencia al proyecto de tipo COM:
Microsoft Excel 12.0 Object Library

Para poder añadir la referencia anterior, tenemos que tener instalado previamente en nuestro sistema el Microsoft Excel.

El método nos preguntará por la ruta donde queremos almacenar el fichero en el disco mediante un objeto del tipo SaveFileDialog.

El código del método que rellena el documento excel es el siguiente:

/// <summary>
/// Método que exporta a un fichero Excel el contenido de un DataGridView
/// </summary>
/// <param name="grd">DataGridView que contiene los datos a exportar</param>
private void ExportarDataGridViewExcel(DataGridView grd)
{
    SaveFileDialog fichero = new SaveFileDialog();
    fichero.Filter = "Excel (*.xls)|*.xls";
    if (fichero.ShowDialog() == DialogResult.OK)
    {
        Microsoft.Office.Interop.Excel.Application aplicacion;
        Microsoft.Office.Interop.Excel.Workbook libros_trabajo;
        Microsoft.Office.Interop.Excel.Worksheet hoja_trabajo;
        aplicacion = new Microsoft.Office.Interop.Excel.Application();
        libros_trabajo = aplicacion.Workbooks.Add();
        hoja_trabajo =
            (Microsoft.Office.Interop.Excel.Worksheet)libros_trabajo.Worksheets.get_Item(1);
        //Recorremos el DataGridView rellenando la hoja de trabajo
        for (int i = 0; i < grd.Rows.Count - 1; i++)
        {
            for (int j = 0; j < grd.Columns.Count; j++)
            {
                hoja_trabajo.Cells[i + 1, j + 1] = grd.Rows[i].Cells[j].Value.ToString();
            }
        }
        libros_trabajo.SaveAs(fichero.FileName,
            Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
        libros_trabajo.Close(true);
        aplicacion.Quit();
    }
}