Saltar al pie de página
USANDO IRONXL

C# DataGridView Exportación a Excel con Formato: La Guía Completa

C# DataGridView Export to Excel with Formatting: La Guía Completa: Imagen 1 - C# DataGridView Export to Excel with Formatting

La exportación de datos DataGridView a un archivo Excel es un requisito común en las aplicaciones Windows Forms. Ya sea para generar informes o transferir datos para su análisis, los desarrolladores necesitan un método fiable para exportar el contenido de DataGridView conservando el formato. En este artículo, te mostraremos cómo exportar DataGridView a Excel utilizando IronXL, un enfoque moderno que funciona perfectamente sin requerir la instalación de Microsoft Excel.

Empiece con IronXL ahora.
green arrow pointer

¿Cómo configuro un proyecto Windows Forms para la exportación de DataGridView?

Los enfoques tradicionales requieren añadir una referencia a través de la pestaña COM a la biblioteca de objetos de Microsoft Excel. Sin embargo, este método tiene desventajas significativas: requiere Microsoft Excel instalado en cada máquina, implica complejos patrones de liberación de objetos con métodos private void releaseobject y funciona mal con archivos Excel de gran tamaño.

IronXL elimina estos problemas por completo. En Visual Studio, basta con instalarlo a través del gestor de paquetes NuGet, sin necesidad de seleccionar el menú Añadir referencia ni de navegar hasta la pestaña COM. La biblioteca gestiona todas las operaciones de exportación de datos sin depender de Microsoft Office.

Para empezar, cree un nuevo proyecto Windows Forms en Visual Studio y, a continuación, añada los siguientes espacios de nombres a su formulario:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

Añada un control DataGridView y un botón a su formulario. El control DataGridView mostrará los datos antes de la exportación, mientras que el botón activa la operación de exportación DataGridView.

¿Cómo puedo cargar datos en un control DataGridView?

El evento Form Load es ideal para rellenar tu DataGridView con datos. El siguiente ejemplo de código muestra la vinculación de una DataTable al control DataGridView:

private void Form1_Load(object sender, EventArgs e)
{
    // Create DataTable with sample data
    DataTable dt = new DataTable();
    dt.Columns.Add("ProductID", typeof(int));
    dt.Columns.Add("ProductName", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("Stock", typeof(int));
    // Add rows with values
    dt.Rows.Add(1, "Laptop", 999.99, 50);
    dt.Rows.Add(2, "Mouse", 29.99, 200);
    dt.Rows.Add(3, "Keyboard", 79.99, 150);
    dt.Rows.Add(4, "Monitor", 349.99, 75);
    dataGridView1.DataSource = dt;
}
private void Form1_Load(object sender, EventArgs e)
{
    // Create DataTable with sample data
    DataTable dt = new DataTable();
    dt.Columns.Add("ProductID", typeof(int));
    dt.Columns.Add("ProductName", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("Stock", typeof(int));
    // Add rows with values
    dt.Rows.Add(1, "Laptop", 999.99, 50);
    dt.Rows.Add(2, "Mouse", 29.99, 200);
    dt.Rows.Add(3, "Keyboard", 79.99, 150);
    dt.Rows.Add(4, "Monitor", 349.99, 75);
    dataGridView1.DataSource = dt;
}
$vbLabelText   $csharpLabel

Datables poblados

C# DataGridView Export to Excel with Formatting: La Guía Completa: Imagen 2 - UI para nuestro formulario

Este código crea una DataTable dt con cuatro columnas y, a continuación, utiliza el método Add para rellenar las filas de DataGridView con valores de ejemplo. El control DataGridView acepta DataTable como fuente de datos, que mostrará los datos en formato tabular. La primera columna contiene identificadores enteros, mientras que las otras columnas contienen valores de cadena y decimales.

¿Cómo puedo exportar datos de DataGridView a un archivo de Excel?

El controlador de eventos de clic del botón contiene la lógica principal de exportación. El enfoque de IronXL difiere de los métodos tradicionales; los contenidos de DataGridView se pueden exportar directamente a un archivo de Excel a través de un paso intermedio de DataTable:

private void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        // Convert DataGridView to DataTable
        DataTable dt = new DataTable();
        foreach (DataGridViewColumn column in dataGridView1.Columns)
            dt.Columns.Add(column.HeaderText);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (!row.IsNewRow)
            {
                DataRow dataRow = dt.NewRow();
                for (int i = 0; i < dataGridView1.Columns.Count; i++)
                    dataRow[i] = row.Cells[i].Value;
                dt.Rows.Add(dataRow);
            }
        }
        // Create workbook and export
        WorkBook workbook = WorkBook.Create();
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        worksheet.LoadFromDataTable(dt, true);
        workbook.SaveAs("C:\\Reports\\Export.xlsx");
        MessageBox.Show("Export complete!");
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Error: {ex.Message}");
    }
}
private void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        // Convert DataGridView to DataTable
        DataTable dt = new DataTable();
        foreach (DataGridViewColumn column in dataGridView1.Columns)
            dt.Columns.Add(column.HeaderText);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (!row.IsNewRow)
            {
                DataRow dataRow = dt.NewRow();
                for (int i = 0; i < dataGridView1.Columns.Count; i++)
                    dataRow[i] = row.Cells[i].Value;
                dt.Rows.Add(dataRow);
            }
        }
        // Create workbook and export
        WorkBook workbook = WorkBook.Create();
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        worksheet.LoadFromDataTable(dt, true);
        workbook.SaveAs("C:\\Reports\\Export.xlsx");
        MessageBox.Show("Export complete!");
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Error: {ex.Message}");
    }
}
$vbLabelText   $csharpLabel

Salida de DataGridView a Excel

C# DataGridView Export to Excel with Formatting: La Guía Completa: Imagen 3 - Archivo Excel generado

Este manejador de eventos de clic de botón con parámetros object sender, EventArgs e itera a través de todos los datos en las filas y columnas de DataGridView, construyendo una DataTable. El método LoadFromDataTable acepta DataTable y rellena la hoja de cálculo. A continuación, el objeto del libro de trabajo se guarda en la ubicación especificada. IronXL también puede exportar grandes archivos de Excel de manera eficiente sin los problemas de memoria comunes con Microsoft Interop.

¿Cómo puedo aplicar formato al archivo Excel exportado?

La creación de un archivo Excel formateado requiere estilizar la fila de encabezado y las celdas. Este ejemplo muestra la aplicación del color de fondo de la fila de encabezado y el estilo de filas alternas:

private void ExportWithFormatting(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create();
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    // Add header row
    string[] headers = { "ID", "Name", "Price", "Stock" };
    for (int col = 0; col < headers.Length; col++)
    {
        worksheet.SetCellValue(0, col, headers[col]);
        worksheet[$"{(char)('A' + col)}1"].Style.Font.Bold = true;
        worksheet[$"{(char)('A' + col)}1"].Style.SetBackgroundColor("#4472C4");
    }
    // Add data with alternating row colors
    int rowIndex = 1;
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.IsNewRow) continue;
        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(rowIndex, col, row.Cells[col].Value?.ToString());
        }
        // Apply alternating background colors
        if (rowIndex % 2 == 0)
        {
            var range = worksheet[$"A{rowIndex + 1}:D{rowIndex + 1}"];
            range.Style.SetBackgroundColor("#D6DCE5");
        }
        rowIndex++;
    }
    workbook.SaveAs("C:\\Reports\\FormattedExport.xlsx");
}
private void ExportWithFormatting(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create();
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    // Add header row
    string[] headers = { "ID", "Name", "Price", "Stock" };
    for (int col = 0; col < headers.Length; col++)
    {
        worksheet.SetCellValue(0, col, headers[col]);
        worksheet[$"{(char)('A' + col)}1"].Style.Font.Bold = true;
        worksheet[$"{(char)('A' + col)}1"].Style.SetBackgroundColor("#4472C4");
    }
    // Add data with alternating row colors
    int rowIndex = 1;
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.IsNewRow) continue;
        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(rowIndex, col, row.Cells[col].Value?.ToString());
        }
        // Apply alternating background colors
        if (rowIndex % 2 == 0)
        {
            var range = worksheet[$"A{rowIndex + 1}:D{rowIndex + 1}"];
            range.Style.SetBackgroundColor("#D6DCE5");
        }
        rowIndex++;
    }
    workbook.SaveAs("C:\\Reports\\FormattedExport.xlsx");
}
$vbLabelText   $csharpLabel

Fichero Excel formateado

C# DataGridView Export to Excel with Formatting: La Guía Completa: Imagen 4 - Salida para el archivo Excel formateado generado

Este ejemplo de exportación de DataGridView a Excel con formato en C# establece la primera fila como una fila de encabezado con estilo, fuente en negrita y colores de fondo. El código aplica un estilo de filas alternas para mejorar la legibilidad. Puede personalizar las celdas con diferentes estilos de fuente, patrones de relleno y configuraciones de bordes utilizando la completa styling API de IronXL.

Conclusión

Exportar DataGridView a Excel en aplicaciones Windows Forms se convierte en algo sencillo con IronXL. A diferencia del enfoque tradicional de Microsoft Excel Object Library que requiere referencias de pestañas COM y un complejo código de limpieza de objetos, IronXL proporciona una API limpia y moderna para crear archivos de Excel con formato.

La biblioteca gestiona desde exportaciones básicas de datos a Excel hasta la generación de archivos Excel sofisticados y formateados, incluido el estilo del color de fondo de la fila de encabezado y la alternancia de filas. Para las aplicaciones que procesan grandes archivos de Excel, IronXL ofrece un rendimiento superior sin necesidad de instalar Microsoft Excel.

¿Listo para optimizar su flujo de trabajo de DataGridView a Excel? Inicie su prueba gratuita hoy mismo, o explore las opciones de licencia de IronXL para la implementación en producción.

Preguntas Frecuentes

¿Cómo puedo exportar datos de DataGridView a Excel en C#?

Con IronXL, puede exportar fácilmente datos de DataGridView a archivos de Excel en C# aprovechando sus potentes funcionalidades para la manipulación y exportación de datos.

¿Qué opciones de formato están disponibles al exportar DataGridView a Excel?

IronXL permite aplicar varias opciones de formato, como el estilo de encabezado y la alternancia de colores de fila, al exportar DataGridView a Excel.

¿Es posible exportar datos de DataGridView a Excel en aplicaciones Windows Forms?

Sí, puedes exportar datos de DataGridView a Excel en aplicaciones Windows Forms utilizando IronXL, que proporciona una integración y funcionalidad perfectas para este propósito.

¿Puedo aplicar estilo a los encabezados al exportar DataGridView a Excel?

IronXL le permite dar estilo a los encabezados con fuentes personalizadas, colores y otras opciones de formato al exportar datos de DataGridView a Excel.

¿Cómo aplico la alternancia de colores de fila en Excel al exportar desde DataGridView?

IronXL le permite aplicar colores de fila alternativos a las hojas de Excel al exportar datos desde DataGridView, mejorando el atractivo visual y la legibilidad de los datos.

¿Necesito bibliotecas especiales para exportar DataGridView a Excel en C#?

Sí, el uso de una biblioteca como IronXL simplifica el proceso de exportación de DataGridView a Excel en C#, proporcionando herramientas sólidas para el manejo y formato de datos.

¿Cuáles son los beneficios de usar IronXL para la exportación de DataGridView a Excel?

IronXL ofrece ventajas como facilidad de uso, amplias opciones de formato y compatibilidad con Windows Forms, lo que lo hace ideal para exportar DataGridView a Excel.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más