Saltar al pie de página
USANDO IRONXL

C# Exportar Lista de Objetos a Excel con IronXL

Exportar colecciones de objetos a archivos de Excel es un requisito fundamental en aplicaciones empresariales. Ya sea generando informes, exportando datos para compartir información o creando hojas de cálculo de Excel para copias de seguridad, los desarrolladores necesitan una forma confiable de transformar objetos List en hojas de cálculo profesionales. IronXL ofrece una solución simplificada que elimina las complejidades tradicionales de la creación de archivos de Excel en .NET, .NET Core o .NET Framework.

¿Por qué es complicado exportar listas a archivos de Excel?

Los enfoques tradicionales para exportar datos a Excel a menudo implican Microsoft Office Interop, lo que requiere la instalación de MS Excel en el servidor y crea problemas de implementación. La población manual de celda por celda usando reflexiones es un proceso que consume tiempo y es propenso a errores. Las potentes funciones de importación de datos de IronXL resuelven estos problemas con el mapeo inteligente de propiedades entre las fuentes de datos y los encabezados de columna de Excel, sin necesidad de MS Office ni de código de reflexión complejo.

La biblioteca maneja la conversión de tipos automáticamente, admite objetos anidados y mantiene la integridad de los datos a través de diferentes formatos como archivos CSV y archivos XLSX. Para los desarrolladores que trabajan con operaciones de Excel en C# sin Interop, IronXL es la opción ideal para proyectos .NET modernos que necesitan capacidades sólidas de generación de Excel e importación y exportación de datos.

¿Cómo exportar datos de una lista simple a Excel?

Empezar con IronXL requiere una configuración mínima. Primero, instala la biblioteca a través de la Consola del Administrador de Paquetes NuGet:

Install-Package IronXL.Excel
Install-Package IronXL.Excel
SHELL

En el siguiente ejemplo de código, exploraremos cómo puedes exportar datos usando un modelo de Empleado:

using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Create sample data for Excel export
        var employees = new List<Employee>
        {
            new Employee { Id = 1, Name = "Alice Johnson", Department = "Engineering",
                           Salary = 95000, HireDate = new DateTime(2020, 3, 15) },
            new Employee { Id = 2, Name = "Bob Smith", Department = "Marketing",
                           Salary = 75000, HireDate = new DateTime(2021, 7, 1) },
            new Employee { Id = 3, Name = "Carol Williams", Department = "Engineering",
                           Salary = 105000, HireDate = new DateTime(2019, 11, 20) }
        };
        // Convert the list of employees to a DataTable
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Department", typeof(string));
        dataTable.Columns.Add("Salary", typeof(decimal));
        dataTable.Columns.Add("HireDate", typeof(DateTime));
        foreach (var employee in employees)
        {
            dataTable.Rows.Add(employee.Id, employee.Name, employee.Department, employee.Salary, employee.HireDate);
        }
        // Export DataTable to Excel spreadsheet
        var workbook = new WorkBook();
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Populate the worksheet
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            worksheet.SetCellValue(0, i, dataTable.Columns[i].ColumnName); // Add column headers
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, dataTable.Rows[i][j]); // Add data rows
            }
        }
        // Save as XLSX file
        workbook.SaveAs("EmployeeReport.xlsx");
    }
}
using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }
    public DateTime HireDate { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        // Create sample data for Excel export
        var employees = new List<Employee>
        {
            new Employee { Id = 1, Name = "Alice Johnson", Department = "Engineering",
                           Salary = 95000, HireDate = new DateTime(2020, 3, 15) },
            new Employee { Id = 2, Name = "Bob Smith", Department = "Marketing",
                           Salary = 75000, HireDate = new DateTime(2021, 7, 1) },
            new Employee { Id = 3, Name = "Carol Williams", Department = "Engineering",
                           Salary = 105000, HireDate = new DateTime(2019, 11, 20) }
        };
        // Convert the list of employees to a DataTable
        DataTable dataTable = new DataTable();
        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));
        dataTable.Columns.Add("Department", typeof(string));
        dataTable.Columns.Add("Salary", typeof(decimal));
        dataTable.Columns.Add("HireDate", typeof(DateTime));
        foreach (var employee in employees)
        {
            dataTable.Rows.Add(employee.Id, employee.Name, employee.Department, employee.Salary, employee.HireDate);
        }
        // Export DataTable to Excel spreadsheet
        var workbook = new WorkBook();
        var worksheet = workbook.CreateWorkSheet("Employees");
        // Populate the worksheet
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
            worksheet.SetCellValue(0, i, dataTable.Columns[i].ColumnName); // Add column headers
        }
        for (int i = 0; i < dataTable.Rows.Count; i++)
        {
            for (int j = 0; j < dataTable.Columns.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, dataTable.Rows[i][j]); // Add data rows
            }
        }
        // Save as XLSX file
        workbook.SaveAs("EmployeeReport.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este código de ejemplo demuestra cómo exportar datos a Excel desde una List<Employee> usando IronXL. Primero convierte la lista de empleados en un DataTable, luego escribe manualmente los encabezados de columna y las filas en una hoja de trabajo. IronXL maneja tipos de datos como int, string y DateTime automáticamente, lo que garantiza un formato limpio en la hoja de cálculo generada. Por último, la función de guardado de Excel produce un archivo XLSX, que puede guardarse como EmployeeReport.xlsx, proporcionando una forma sencilla y eficiente de convertir datos estructurados de C# en un informe Excel profesional.

C# Exportar Lista de Objetos a Excel con IronXL: Imagen 1 - Imagen 1 de 3 relacionada a C# Exportar Lista de Objetos a Excel con IronXL

¿Cómo exportar objetos de negocio complejos?

Las aplicaciones de .NET del mundo real a menudo implican estructuras de datos más complejas. A continuación se explica cómo exportar un inventario de productos con propiedades anidadas, utilizando C# para exportar una lista de objetos a Excel:

using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Product
{
    public string SKU { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastRestocked { get; set; }
    public decimal CalculatedValue => Price * StockLevel;
}

class Program
{
    static void Main(string[] args)
    {
        // Generate product inventory list for Excel export
        var products = new List<Product>
        {
            new Product
            {
                SKU = "TECH-001",
                ProductName = "Wireless Mouse",
                Category = "Electronics",
                Price = 29.99m,
                StockLevel = 150,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-5)
            },
            new Product
            {
                SKU = "TECH-002",
                ProductName = "Mechanical Keyboard",
                Category = "Electronics",
                Price = 89.99m,
                StockLevel = 75,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-12)
            },
            new Product
            {
                SKU = "OFF-001",
                ProductName = "Desk Organizer",
                Category = "Office Supplies",
                Price = 15.99m,
                StockLevel = 0,
                IsActive = false,
                LastRestocked = DateTime.Now.AddMonths(-1)
            }
        };

        // Create Excel workbook and import collection data
        var workbook = WorkBook.Create();
        var worksheet = workbook.CreateWorkSheet("Inventory");

        // Export generic list to Excel with headers
        var dataTable = new DataTable();
        dataTable.Columns.Add("SKU", typeof(string));
        dataTable.Columns.Add("ProductName", typeof(string));
        dataTable.Columns.Add("Category", typeof(string));
        dataTable.Columns.Add("Price", typeof(decimal));
        dataTable.Columns.Add("StockLevel", typeof(int));
        dataTable.Columns.Add("IsActive", typeof(bool));
        dataTable.Columns.Add("LastRestocked", typeof(DateTime));
        dataTable.Columns.Add("CalculatedValue", typeof(decimal));

        foreach (var product in products)
        {
            dataTable.Rows.Add(
                product.SKU,
                product.ProductName,
                product.Category,
                product.Price,
                product.StockLevel,
                product.IsActive,
                product.LastRestocked,
                product.CalculatedValue
            );
        }

        // Set header values
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "ProductName";
        worksheet["C1"].Value = "Category";
        worksheet["D1"].Value = "Price";
        worksheet["E1"].Value = "StockLevel";
        worksheet["F1"].Value = "IsActive";
        worksheet["G1"].Value = "LastRestocked";
        worksheet["H1"].Value = "CalculatedValue";

        int row = 2;
        foreach (DataRow dataRow in dataTable.Rows)
        {
            worksheet[$"A{row}"].Value = dataRow["SKU"];
            worksheet[$"B{row}"].Value = dataRow["ProductName"];
            worksheet[$"C{row}"].Value = dataRow["Category"];
            worksheet[$"D{row}"].Value = dataRow["Price"];
            worksheet[$"E{row}"].Value = dataRow["StockLevel"];
            worksheet[$"F{row}"].Value = dataRow["IsActive"];
            worksheet[$"G{row}"].Value = dataRow["LastRestocked"];
            worksheet[$"H{row}"].Value = dataRow["CalculatedValue"];
            row++;
        }

        // Auto-fit columns for optimal display
        for (int col = 0; col < 8; col++)
        {
            worksheet.AutoSizeColumn(col);
        }

        // Save as Excel XLSX format
        workbook.SaveAs("ProductInventory.xlsx");
    }
}
using IronXL;
using System;
using System.Collections.Generic;
using System.Data;

public class Product
{
    public string SKU { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
    public bool IsActive { get; set; }
    public DateTime LastRestocked { get; set; }
    public decimal CalculatedValue => Price * StockLevel;
}

class Program
{
    static void Main(string[] args)
    {
        // Generate product inventory list for Excel export
        var products = new List<Product>
        {
            new Product
            {
                SKU = "TECH-001",
                ProductName = "Wireless Mouse",
                Category = "Electronics",
                Price = 29.99m,
                StockLevel = 150,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-5)
            },
            new Product
            {
                SKU = "TECH-002",
                ProductName = "Mechanical Keyboard",
                Category = "Electronics",
                Price = 89.99m,
                StockLevel = 75,
                IsActive = true,
                LastRestocked = DateTime.Now.AddDays(-12)
            },
            new Product
            {
                SKU = "OFF-001",
                ProductName = "Desk Organizer",
                Category = "Office Supplies",
                Price = 15.99m,
                StockLevel = 0,
                IsActive = false,
                LastRestocked = DateTime.Now.AddMonths(-1)
            }
        };

        // Create Excel workbook and import collection data
        var workbook = WorkBook.Create();
        var worksheet = workbook.CreateWorkSheet("Inventory");

        // Export generic list to Excel with headers
        var dataTable = new DataTable();
        dataTable.Columns.Add("SKU", typeof(string));
        dataTable.Columns.Add("ProductName", typeof(string));
        dataTable.Columns.Add("Category", typeof(string));
        dataTable.Columns.Add("Price", typeof(decimal));
        dataTable.Columns.Add("StockLevel", typeof(int));
        dataTable.Columns.Add("IsActive", typeof(bool));
        dataTable.Columns.Add("LastRestocked", typeof(DateTime));
        dataTable.Columns.Add("CalculatedValue", typeof(decimal));

        foreach (var product in products)
        {
            dataTable.Rows.Add(
                product.SKU,
                product.ProductName,
                product.Category,
                product.Price,
                product.StockLevel,
                product.IsActive,
                product.LastRestocked,
                product.CalculatedValue
            );
        }

        // Set header values
        worksheet["A1"].Value = "SKU";
        worksheet["B1"].Value = "ProductName";
        worksheet["C1"].Value = "Category";
        worksheet["D1"].Value = "Price";
        worksheet["E1"].Value = "StockLevel";
        worksheet["F1"].Value = "IsActive";
        worksheet["G1"].Value = "LastRestocked";
        worksheet["H1"].Value = "CalculatedValue";

        int row = 2;
        foreach (DataRow dataRow in dataTable.Rows)
        {
            worksheet[$"A{row}"].Value = dataRow["SKU"];
            worksheet[$"B{row}"].Value = dataRow["ProductName"];
            worksheet[$"C{row}"].Value = dataRow["Category"];
            worksheet[$"D{row}"].Value = dataRow["Price"];
            worksheet[$"E{row}"].Value = dataRow["StockLevel"];
            worksheet[$"F{row}"].Value = dataRow["IsActive"];
            worksheet[$"G{row}"].Value = dataRow["LastRestocked"];
            worksheet[$"H{row}"].Value = dataRow["CalculatedValue"];
            row++;
        }

        // Auto-fit columns for optimal display
        for (int col = 0; col < 8; col++)
        {
            worksheet.AutoSizeColumn(col);
        }

        // Save as Excel XLSX format
        workbook.SaveAs("ProductInventory.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este código demuestra cómo generar un reporte dinámico de inventario de productos en Excel usando IronXL. Construye una lista de objetos Product que contiene detalles como SKU, precio, nivel de existencias y fecha de reposición, y luego calcula un CalculatedValue derivado para cada artículo. Los datos se convierten en una Tabla de datos, se escriben en una hoja de cálculo de Excel con encabezados y se formatean para facilitar su lectura mediante columnas de tamaño automático. IronXL maneja sin problemas tipos de datos como decimales, booleanos y fechas, asegurando una salida de hoja de cálculo profesional. El resultado, ProductInventory.xlsx, proporciona una exportación de inventario limpia y basada en datos, ideal para informes o análisis empresariales.

Exportación de listas de objetos de C# a Excel con IronXL: Imagen 2 - Ejemplo de salida para objetos de negocio complejos

¿Cómo agregar formato profesional?

Transforme las exportaciones básicas en informes pulidos con las completas capacidades de estilo de IronXL:

// After importing data, apply professional formatting
var headerRange = worksheet["A1:H1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Format currency columns for Excel export
var priceColumn = worksheet["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Apply conditional formatting to highlight business metrics
for (int row = 2; row <= products.Count + 1; row++)
{
    var stockCell = worksheet[$"E{row}"];
    if (stockCell.IntValue < 10)
    {
        stockCell.Style.BackgroundColor = "#FF6B6B";
    }
}
// Export formatted list to Excel file
workbook.SaveAs("FormattedInventory.xlsx");
// After importing data, apply professional formatting
var headerRange = worksheet["A1:H1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";
// Format currency columns for Excel export
var priceColumn = worksheet["D2:D100"];
priceColumn.Style.NumberFormat = "$#,##0.00";
// Apply conditional formatting to highlight business metrics
for (int row = 2; row <= products.Count + 1; row++)
{
    var stockCell = worksheet[$"E{row}"];
    if (stockCell.IntValue < 10)
    {
        stockCell.Style.BackgroundColor = "#FF6B6B";
    }
}
// Export formatted list to Excel file
workbook.SaveAs("FormattedInventory.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Estas opciones de estilo transforman exportaciones de datos en bruto en informes listos para ejecutivos. Encabezados en negrita con colores de fondo crean jerarquía visual al exportar colecciones a Excel. El formato numérico garantiza que los valores monetarios se muestren de forma profesional. El formato condicional resalta métricas empresariales críticas, como niveles bajos de stock, haciendo el archivo Excel exportado inmediatamente utilizable para la gestión de inventario. Obtenga más información sobre formateo avanzado de celdas y estilos de borde para mejorar aún más sus exportaciones.

Exportación de lista de objetos de C# a Excel con IronXL: Imagen 3 - Hoja de cálculo formateada

Comience a exportar listas a Excel hoy mismo

IronXL transforma la compleja tarea de generación de Excel en un código sencillo y mantenible. Su método inteligente ImportData elimina la necesidad de dependencias de Microsoft Office a la vez que proporciona resultados profesionales que cumplen los requisitos de la empresa. El conjunto de características integral de la biblioteca maneja desde exportaciones de listas básicas hasta transformaciones de datos complejas con estilo y formato.

Empiece con IronXL ahora.
green arrow pointer

¿Listo para optimizar tus exportaciones de Excel en C#? Descargue IronXL ahora y experimente lo fácil que es convertir objetos de lista a Excel en sus aplicaciones .NET. Para implementaciones de producción, explore nuestras opciones de licencia flexibles que se adaptan a sus necesidades. Visite nuestra completa documentación para obtener más tutoriales y ejemplos.

Preguntas Frecuentes

¿Cómo puedo exportar una lista de C# a un archivo Excel?

Puede exportar una lista de C# a un archivo de Excel utilizando el método ImportData de IronXL, que simplifica el proceso sin requerir Office Interop.

¿Por qué debería usar IronXL para exportar datos a Excel?

IronXL proporciona una solución simplificada para exportar datos a Excel eliminando las complejidades tradicionales y ofreciendo una integración sencilla con .NET, .NET Core o .NET Framework.

¿Necesito tener instalado Microsoft Office para usar IronXL?

No, IronXL no requiere la instalación de Microsoft Office. Funciona de forma independiente, lo que le permite crear y manipular archivos de Excel mediante programación.

¿Puede IronXL manejar objetos complejos en listas al exportar a Excel?

Sí, IronXL puede manejar tanto listas genéricas como objetos complejos, proporcionando flexibilidad en la exportación de varios tipos de datos a Excel.

¿Es IronXL compatible con .NET Core?

Sí, IronXL es compatible con .NET Core, así como con .NET y .NET Framework, lo que lo hace versátil para diferentes entornos de desarrollo.

¿Cuál es la ventaja de utilizar el método ImportData de IronXL?

El método ImportData en IronXL simplifica el proceso de transferencia de datos de listas de C# a Excel, reduciendo la complejidad del código y mejorando la productividad.

¿Puedo crear hojas de cálculo profesionales con IronXL?

Absolutamente, IronXL permite a los desarrolladores transformar objetos List en hojas de cálculo profesionales fácilmente, adecuadas para informes, intercambio de datos o copias de seguridad.

¿Hay ejemplos de código disponibles para utilizar IronXL?

Sí, la documentación y los tutoriales de IronXL proporcionan ejemplos de código sencillos para exportar tanto listas genéricas como objetos complejos 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