Saltar al pie de página
USANDO IRONXL

Cómo crear hojas de cálculo de Excel en C# .NET Core con IronXL

La generación de hojas de cálculo de Excel mediante programación en ASP.NET Core abre potentes posibilidades de automatización, desde la elaboración de informes financieros y el seguimiento de inventarios hasta la exportación de datos y los paneles de control automatizados. En el desarrollo de aplicaciones web, la integración de la generación de hojas de cálculo Excel con .NET Core mejora la accesibilidad a los datos y la elaboración de informes, permitiendo a los usuarios interactuar con conjuntos de datos complejos y extraer información valiosa de ellos. Con IronXL for .NET, los desarrolladores pueden crear archivos de Excel sin necesidad de instalar Microsoft Office ni depender de Office Interop. Esta biblioteca multiplataforma funciona en Windows, Linux y macOS, lo que la hace ideal para aplicaciones modernas basadas en datos implementadas en Azure o en contenedores Docker.

Este tutorial explica cómo crear hojas de cálculo Excel .NET Core con formato profesional, fórmulas y múltiples opciones de exportación. Ya sea creando aplicaciones web ASP.NET Core, aplicaciones de consola o servicios en segundo plano, estas técnicas se aplican a todas las aplicaciones de .NET 10. Al final, dispondrás de código funcional para generar archivos Excel listos para producción que se integran con proyectos existentes en Visual Studio o cualquier Entorno de desarrollo .NET.


¿Cómo se instala IronXL en un proyecto .NET Core?

Antes de crear hojas de cálculo, debe añadir IronXL a su proyecto. Abre la consola del Administrador de paquetes de NuGet en Visual Studio y ejecuta uno de estos comandos:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

El primer comando funciona en la consola del Administrador de paquetes de Visual Studio. La segunda funciona en cualquier terminal que utilice la CLI de .NET. Ambas instalan el mismo paquete NuGet y añaden IronXL a las referencias de tu proyecto automáticamente.

Una vez completada la instalación, IronXL está listo para usarse con una sola directiva using. La biblioteca IronXL no requiere ninguna configuración adicional, dependencias de tiempo de ejecución ni la instalación de Microsoft Office. Funciona en cualquier plataforma en la que se ejecute .NET 10: Windows, Linux, macOS o cualquier Entorno en la nube.

Para obtener información detallada sobre las opciones de instalación, incluida la descarga manual de DLL, consulte la guía de instalación de IronXL. Los desarrolladores de Linux también deben consultar la documentación de implementación de Linux para obtener orientación específica sobre la plataforma.

.NET Core Excel Spreadsheet: Crear archivos de hojas de cálculo Excel profesionales en C# utilizando IronXL for .NET: Imagen 1 - Instalación


¿Cómo se crea una hoja de cálculo de Excel sin depender de Office?

La automatización tradicional de Microsoft Excel requiere la instalación de MS Office y utiliza Office Interop, que no funciona en Linux ni en entornos contenedorizados. Tal y como se explica en la documentación de Microsoft sobre Office Interop, Office Interop introduce complejidad en la implementación y problemas relacionados con las licencias. IronXL for .NET elimina estas limitaciones al proporcionar una solución .NET pura que procesa archivos de Excel de forma nativa con total compatibilidad con las capacidades de las hojas de cálculo modernas.

La biblioteca es compatible con .NET 8, .NET 9 y .NET 10, así como con las versiones anteriores de .NET Core. Maneja XLSX, XLS, CSV y otros formatos de hoja de cálculo sin dependencias externas. Esto la hace especialmente valiosa para aplicaciones del lado del servidor, microservicios y situaciones en las que no resulta práctico instalar Microsoft Office. La fácil integración a través de NuGet te permite empezar a crear archivos de Excel en cuestión de minutos:

using IronXL;

// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add an Excel worksheet with a custom name
WorkSheet sheet = workbook.CreateWorkSheet("SalesReport");
// Set a cell value
sheet["A1"].Value = "Product Sales Summary";
// Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx");
using IronXL;

// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add an Excel worksheet with a custom name
WorkSheet sheet = workbook.CreateWorkSheet("SalesReport");
// Set a cell value
sheet["A1"].Value = "Product Sales Summary";
// Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx");
Imports IronXL

' Create a new workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add an Excel worksheet with a custom name
Dim sheet As WorkSheet = workbook.CreateWorkSheet("SalesReport")
' Set a cell value
sheet("A1").Value = "Product Sales Summary"
' Save the generated Excel file
workbook.SaveAs("SalesReport.xlsx")
$vbLabelText   $csharpLabel

El método WorkBook.Create() inicializa un nuevo libro de Excel, aceptando un parámetro ExcelFileFormat para especificar XLSX (formato moderno basado en XML introducido en Excel 2007) o XLS (formato binario heredado). Se recomienda XLSX para la mayoría de los casos debido al menor tamaño de los archivos y a la mayor compatibilidad con las herramientas modernas. El método CreateWorkSheet() añade hojas de cálculo con nombre donde se almacenan los datos de Excel; cada libro puede contener varias hojas individuales para organizar datos relacionados.

Los valores de las celdas se establecen utilizando una notación entre corchetes que refleja el sistema de direccionamiento de Excel: sheet["A1"] apunta directamente a la celda A1. Esta sintaxis admite tanto celdas específicas como rangos, lo que facilita las operaciones masivas en cualquier proyecto de hoja de cálculo.

Resultado

.NET Core Excel Spreadsheet: Crear hojas de cálculo Excel profesionales en C# utilizando IronXL for .NET: Imagen 2 - Resultado en Excel


¿Cómo se añaden hojas de cálculo y se rellenan con datos mediante programación?

Las hojas de cálculo Excel del mundo real contienen datos estructurados en varias hojas de cálculo. IronXL proporciona métodos flexibles para organizar la información y rellenar las celdas de forma eficiente, tanto si se trabaja con la introducción manual de datos como con canalizaciones de datos automatizadas en aplicaciones basadas en datos.

using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("MonthlySales");

// Set column names as headers
sheet["A1"].Value = "Month";
sheet["B1"].Value = "Revenue";
sheet["C1"].Value = "Units Sold";

// Populate Excel data using a loop (mock sales data)
string[] months = { "January", "February", "March", "April", "May", "June" };
decimal[] revenue = { 45000.50m, 52000.75m, 48500.25m, 61000.00m, 58750.50m, 67200.25m };
int[] units = { 150, 175, 160, 200, 190, 220 };

for (int i = 0; i < months.Length; i++)
{
    int row = i + 2;
    sheet[$"A{row}"].Value = months[i];
    sheet[$"B{row}"].Value = revenue[i];
    sheet[$"C{row}"].Value = units[i];
}

// Set a range of cells to the same value across columns
sheet["D2:D7"].Value = "Active";
workbook.SaveAs("MonthlySales.xlsx");
using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("MonthlySales");

// Set column names as headers
sheet["A1"].Value = "Month";
sheet["B1"].Value = "Revenue";
sheet["C1"].Value = "Units Sold";

// Populate Excel data using a loop (mock sales data)
string[] months = { "January", "February", "March", "April", "May", "June" };
decimal[] revenue = { 45000.50m, 52000.75m, 48500.25m, 61000.00m, 58750.50m, 67200.25m };
int[] units = { 150, 175, 160, 200, 190, 220 };

for (int i = 0; i < months.Length; i++)
{
    int row = i + 2;
    sheet[$"A{row}"].Value = months[i];
    sheet[$"B{row}"].Value = revenue[i];
    sheet[$"C{row}"].Value = units[i];
}

// Set a range of cells to the same value across columns
sheet["D2:D7"].Value = "Active";
workbook.SaveAs("MonthlySales.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("MonthlySales")

' Set column names as headers
sheet("A1").Value = "Month"
sheet("B1").Value = "Revenue"
sheet("C1").Value = "Units Sold"

' Populate Excel data using a loop (mock sales data)
Dim months As String() = {"January", "February", "March", "April", "May", "June"}
Dim revenue As Decimal() = {45000.5D, 52000.75D, 48500.25D, 61000.0D, 58750.5D, 67200.25D}
Dim units As Integer() = {150, 175, 160, 200, 190, 220}

For i As Integer = 0 To months.Length - 1
    Dim row As Integer = i + 2
    sheet($"A{row}").Value = months(i)
    sheet($"B{row}").Value = revenue(i)
    sheet($"C{row}").Value = units(i)
Next

' Set a range of cells to the same value across columns
sheet("D2:D7").Value = "Active"
workbook.SaveAs("MonthlySales.xlsx")
$vbLabelText   $csharpLabel

La interpolación de cadenas ($"A{row}") permite el direccionamiento dinámico de celdas dentro de bucles, lo que facilita rellenar filas mediante programación desde cualquier fuente de datos. La sintaxis de rango sheet["D2:D7"] aplica valores a varias celdas simultáneamente, lo cual resulta útil para columnas de estado, valores predeterminados o la inicialización de regiones de datos. IronXL gestiona automáticamente la conversión de tipos de datos, almacenando los decimales como valores numéricos y el contenido de cadenas como texto, al tiempo que conserva los tipos de datos de Excel adecuados para el archivo generado.

Trabajar con varias hojas de cálculo

La creación de varias hojas de cálculo organiza los datos de Excel relacionados de forma lógica dentro de un único libro:

WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
WorkSheet detailSheet = workbook.CreateWorkSheet("Details");
WorkSheet archiveSheet = workbook.CreateWorkSheet("Archive");
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
WorkSheet detailSheet = workbook.CreateWorkSheet("Details");
WorkSheet archiveSheet = workbook.CreateWorkSheet("Archive");
Dim summarySheet As WorkSheet = workbook.CreateWorkSheet("Summary")
Dim detailSheet As WorkSheet = workbook.CreateWorkSheet("Details")
Dim archiveSheet As WorkSheet = workbook.CreateWorkSheet("Archive")
$vbLabelText   $csharpLabel

Para aplicaciones que requieran integración con bases de datos, IronXL funciona con Entity Framework Core, Dapper o ADO.NET sin intermediarios. Los datos de los objetos DataTable se pueden exportar directamente a hojas de cálculo, lo que simplifica los flujos de trabajo de generación de informes y permite a los usuarios compartir datos entre sistemas.

Obtenga más información sobre la gestión de hojas de cálculo y la creación de archivos de Excel en la documentación. Para leer un archivo Excel existente, consulta el tutorial sobre cómo cargar archivos Excel.

Resultado

.NET Core Excel Spreadsheet: Crear archivos de hojas de cálculo Excel profesionales en C# utilizando IronXL: Imagen 3 - Salida de varias hojas de cálculo


¿Cómo se aplica un formato y un estilo profesionales?

Los datos en bruto adquieren sentido cuando se formatean correctamente. IronXL admite colores de fondo, fuentes, bordes y formatos numéricos: capacidades de formato esenciales que transforman las hojas de cálculo de Excel en informes pulidos, adecuados para presentaciones ejecutivas o entregables a clientes.

using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("FormattedReport");

// Create headers with styling
sheet["A1"].Value = "Category";
sheet["B1"].Value = "Amount";
sheet["C1"].Value = "Date";

// Apply header formatting to the Excel sheet
sheet["A1:C1"].Style.SetBackgroundColor("#2E86AB");
sheet["A1:C1"].Style.Font.Bold = true;
sheet["A1:C1"].Style.Font.SetColor("#FFFFFF");

// Add sample data to specific cells
sheet["A2"].Value = "Software License";
sheet["B2"].Value = 1299.99m;
sheet["C2"].Value = DateTime.Now;

// Format currency and date columns
sheet["B2"].FormatString = "$#,##0.00";
sheet["C2"].FormatString = "yyyy-MM-dd";

// Add borders around the data range
var dataRange = sheet["A1:C2"];
dataRange.Style.BottomBorder.SetColor("#000000");
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
workbook.SaveAs("FormattedReport.xlsx");
using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("FormattedReport");

// Create headers with styling
sheet["A1"].Value = "Category";
sheet["B1"].Value = "Amount";
sheet["C1"].Value = "Date";

// Apply header formatting to the Excel sheet
sheet["A1:C1"].Style.SetBackgroundColor("#2E86AB");
sheet["A1:C1"].Style.Font.Bold = true;
sheet["A1:C1"].Style.Font.SetColor("#FFFFFF");

// Add sample data to specific cells
sheet["A2"].Value = "Software License";
sheet["B2"].Value = 1299.99m;
sheet["C2"].Value = DateTime.Now;

// Format currency and date columns
sheet["B2"].FormatString = "$#,##0.00";
sheet["C2"].FormatString = "yyyy-MM-dd";

// Add borders around the data range
var dataRange = sheet["A1:C2"];
dataRange.Style.BottomBorder.SetColor("#000000");
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin;
workbook.SaveAs("FormattedReport.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("FormattedReport")

' Create headers with styling
sheet("A1").Value = "Category"
sheet("B1").Value = "Amount"
sheet("C1").Value = "Date"

' Apply header formatting to the Excel sheet
sheet("A1:C1").Style.SetBackgroundColor("#2E86AB")
sheet("A1:C1").Style.Font.Bold = True
sheet("A1:C1").Style.Font.SetColor("#FFFFFF")

' Add sample data to specific cells
sheet("A2").Value = "Software License"
sheet("B2").Value = 1299.99D
sheet("C2").Value = DateTime.Now

' Format currency and date columns
sheet("B2").FormatString = "$#,##0.00"
sheet("C2").FormatString = "yyyy-MM-dd"

' Add borders around the data range
Dim dataRange = sheet("A1:C2")
dataRange.Style.BottomBorder.SetColor("#000000")
dataRange.Style.BottomBorder.Type = IronXL.Styles.BorderType.Thin
workbook.SaveAs("FormattedReport.xlsx")
$vbLabelText   $csharpLabel

La propiedad Style ofrece opciones de formato que se corresponden con las capacidades de Microsoft Excel. Los colores de fondo admiten códigos hexadecimales (con o sin el prefijo #), mientras que FormatString aplica formatos numéricos idénticos a la sintaxis de formato personalizado de Excel; los mismos patrones funcionan en ambos entornos. El estilo de bordes admite los tipos Delgado, Medio, Grueso y Doble, lo que permite un control preciso sobre los límites de las celdas en tu hoja de cálculo de Excel.

Técnicas avanzadas de formato

En las hojas de cálculo de Excel con gran cantidad de datos, CreateFreezePane(0, 1) mantiene los encabezados visibles mientras se desplaza, una mejora sutil que aumenta significativamente la usabilidad con conjuntos de datos de gran tamaño. La configuración de impresión a través de sheet.PrintSetup gestiona la orientación, los márgenes y el escalado para la salida física.

Explora opciones de estilo adicionales en la guía de formato de celdas y el tutorial de configuración de bordes. Estas herramientas le ofrecen un control total sobre todos los aspectos de la apariencia de las celdas.


¿Cómo se utilizan las fórmulas de Excel para realizar cálculos automáticos?

El motor de cálculo de Excel automatiza el análisis de datos, e IronXL ofrece compatibilidad total con fórmulas. Defina fórmulas como cadenas utilizando la sintaxis estándar de Excel, e IronXL calculará los resultados automáticamente cuando se solicite, algo esencial para la elaboración de informes y el análisis financiero.

using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("BudgetCalculations");

// Add expense data to the Excel workbook
sheet["A1"].Value = "Expense";
sheet["B1"].Value = "Amount";
sheet["A2"].Value = "Rent";
sheet["B2"].Value = 2500;
sheet["A3"].Value = "Utilities";
sheet["B3"].Value = 350;
sheet["A4"].Value = "Supplies";
sheet["B4"].Value = 875;
sheet["A5"].Value = "Marketing";
sheet["B5"].Value = 1200;

// Add formulas for calculations
sheet["A7"].Value = "Total:";
sheet["B7"].Formula = "=SUM(B2:B5)";
sheet["A8"].Value = "Average:";
sheet["B8"].Formula = "=AVERAGE(B2:B5)";
sheet["A9"].Value = "Maximum:";
sheet["B9"].Formula = "=MAX(B2:B5)";
sheet["A10"].Value = "Count:";
sheet["B10"].Formula = "=COUNT(B2:B5)";

// Calculate all formulas
workbook.EvaluateAll();

// Access calculated values programmatically
decimal total = sheet["B7"].DecimalValue;
Console.WriteLine($"Calculated total: {total}");
workbook.SaveAs("BudgetCalculations.xlsx");
using IronXL;

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("BudgetCalculations");

// Add expense data to the Excel workbook
sheet["A1"].Value = "Expense";
sheet["B1"].Value = "Amount";
sheet["A2"].Value = "Rent";
sheet["B2"].Value = 2500;
sheet["A3"].Value = "Utilities";
sheet["B3"].Value = 350;
sheet["A4"].Value = "Supplies";
sheet["B4"].Value = 875;
sheet["A5"].Value = "Marketing";
sheet["B5"].Value = 1200;

// Add formulas for calculations
sheet["A7"].Value = "Total:";
sheet["B7"].Formula = "=SUM(B2:B5)";
sheet["A8"].Value = "Average:";
sheet["B8"].Formula = "=AVERAGE(B2:B5)";
sheet["A9"].Value = "Maximum:";
sheet["B9"].Formula = "=MAX(B2:B5)";
sheet["A10"].Value = "Count:";
sheet["B10"].Formula = "=COUNT(B2:B5)";

// Calculate all formulas
workbook.EvaluateAll();

// Access calculated values programmatically
decimal total = sheet["B7"].DecimalValue;
Console.WriteLine($"Calculated total: {total}");
workbook.SaveAs("BudgetCalculations.xlsx");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("BudgetCalculations")

' Add expense data to the Excel workbook
sheet("A1").Value = "Expense"
sheet("B1").Value = "Amount"
sheet("A2").Value = "Rent"
sheet("B2").Value = 2500
sheet("A3").Value = "Utilities"
sheet("B3").Value = 350
sheet("A4").Value = "Supplies"
sheet("B4").Value = 875
sheet("A5").Value = "Marketing"
sheet("B5").Value = 1200

' Add formulas for calculations
sheet("A7").Value = "Total:"
sheet("B7").Formula = "=SUM(B2:B5)"
sheet("A8").Value = "Average:"
sheet("B8").Formula = "=AVERAGE(B2:B5)"
sheet("A9").Value = "Maximum:"
sheet("B9").Formula = "=MAX(B2:B5)"
sheet("A10").Value = "Count:"
sheet("B10").Formula = "=COUNT(B2:B5)"

' Calculate all formulas
workbook.EvaluateAll()

' Access calculated values programmatically
Dim total As Decimal = sheet("B7").DecimalValue
Console.WriteLine($"Calculated total: {total}")
workbook.SaveAs("BudgetCalculations.xlsx")
$vbLabelText   $csharpLabel

La propiedad Formula admite la sintaxis estándar de fórmulas de Excel; las mismas fórmulas que funcionan en Microsoft Excel funcionan aquí. Después de establecer las fórmulas, llame a EvaluateAll() para calcular los resultados. Este paso garantiza que los valores calculados estén disponibles de inmediato a través de propiedades tipadas como DecimalValue, IntValue o StringValue. Sin llamar a EvaluateAll(), las fórmulas se guardan correctamente y se calculan al abrir el archivo en Excel, pero el acceso programático a los resultados requiere una evaluación previa.

Resultado

.NET Core Excel Spreadsheet: Crear hojas de cálculo profesionales de Excel en C# con IronXL: Imagen 4 - Resultado de la fórmula de Excel

.NET Core Excel Spreadsheet: Crear hojas de cálculo profesionales de Excel en C# con IronXL: Imagen 5 - Salida de la consola

IronXL soporta más de 150 funciones de Excel, incluyendo operaciones matemáticas (SUM, AVERAGE, ROUND), funciones estadísticas (COUNT, MAX, MIN, STDEV), manipulación de texto (CONCATENATE, LEFT, RIGHT), y operaciones lógicas (IF, AND, OR). Consulte la guía de edición de fórmulas para casos avanzados, incluidas las referencias a celdas entre hojas de cálculo.

Métodos de agregación integrados

Para casos más sencillos en los que no es necesario que las fórmulas se mantengan en el archivo de Excel, IronXL ofrece métodos de agregación integrados:

decimal sum = sheet["B2:B5"].Sum();
decimal avg = sheet["B2:B5"].Avg();
decimal max = sheet["B2:B5"].Max();
decimal sum = sheet["B2:B5"].Sum();
decimal avg = sheet["B2:B5"].Avg();
decimal max = sheet["B2:B5"].Max();
Dim sum As Decimal = sheet("B2:B5").Sum()
Dim avg As Decimal = sheet("B2:B5").Avg()
Dim max As Decimal = sheet("B2:B5").Max()
$vbLabelText   $csharpLabel

Estos métodos ofrecen una alternativa nativa de C# cuando no es necesario que los cálculos aparezcan como fórmulas visibles en la hoja de cálculo. La API orientada a objetos mantiene tu código legible y seguro en cuanto a tipos sin requerir una sintaxis de fórmulas basada en cadenas.


¿Cómo se exportan archivos de Excel y se ponen a disposición para su descarga?

IronXL admite varios formatos de exportación para satisfacer diferentes requisitos de integración. Además de los formatos estándar de Excel, las hojas de cálculo pueden exportarse a CSV para el intercambio de datos, JSON para aplicaciones web o TSV para la compatibilidad con sistemas heredados. Esta flexibilidad facilita la integración de la generación de Excel en cualquier flujo de trabajo.

using IronXL;

WorkBook workbook = WorkBook.Load("BudgetCalculations.xlsx");

// Export to different formats
workbook.SaveAs("output.xlsx");      // Modern Excel (Office 2007+)
workbook.SaveAs("output.xls");       // Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv");    // CSV for data import/export
workbook.SaveAsJson("output.json");  // JSON for web APIs
using IronXL;

WorkBook workbook = WorkBook.Load("BudgetCalculations.xlsx");

// Export to different formats
workbook.SaveAs("output.xlsx");      // Modern Excel (Office 2007+)
workbook.SaveAs("output.xls");       // Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv");    // CSV for data import/export
workbook.SaveAsJson("output.json");  // JSON for web APIs
Imports IronXL

Dim workbook As WorkBook = WorkBook.Load("BudgetCalculations.xlsx")

' Export to different formats
workbook.SaveAs("output.xlsx")      ' Modern Excel (Office 2007+)
workbook.SaveAs("output.xls")       ' Legacy Excel (97-2003)
workbook.SaveAsCsv("output.csv")    ' CSV for data import/export
workbook.SaveAsJson("output.json")  ' JSON for web APIs
$vbLabelText   $csharpLabel

Cada formato sirve para casos de uso específicos. XLSX funciona mejor para conservar el formato y las fórmulas cuando se comparte con usuarios de Excel. El formato CSV ofrece la máxima compatibilidad para la importación a bases de datos, herramientas de análisis u otras aplicaciones de hoja de cálculo. JSON se integra de forma natural con frontends de JavaScript y API REST.

Resultado

.NET Core Excel Spreadsheet: Crear archivos de hojas de cálculo Excel profesionales en C# utilizando IronXL: Imagen 6 - Salida Excel moderna

.NET Core Excel Spreadsheet: Crear hojas de cálculo Excel profesionales en C# con IronXL: Imagen 7 - Salida JSON

Servir archivos Excel en ASP.NET Core

Para las aplicaciones web ASP.NET Core, servir archivos Excel como respuestas descargables requiere sólo unas pocas líneas de código:

[HttpGet("download-report")]
public IActionResult DownloadReport()
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workbook.CreateWorkSheet("Report");
    sheet["A1"].Value = "Generated Report";
    sheet["A2"].Value = DateTime.Now;

    var stream = workbook.ToStream();
    return File(
        stream,
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "Report.xlsx"
    );
}
[HttpGet("download-report")]
public IActionResult DownloadReport()
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workbook.CreateWorkSheet("Report");
    sheet["A1"].Value = "Generated Report";
    sheet["A2"].Value = DateTime.Now;

    var stream = workbook.ToStream();
    return File(
        stream,
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "Report.xlsx"
    );
}
Imports Microsoft.AspNetCore.Mvc

<HttpGet("download-report")>
Public Function DownloadReport() As IActionResult
    Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
    Dim sheet As WorkSheet = workbook.CreateWorkSheet("Report")
    sheet("A1").Value = "Generated Report"
    sheet("A2").Value = DateTime.Now

    Dim stream = workbook.ToStream()
    Return File(
        stream,
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "Report.xlsx"
    )
End Function
$vbLabelText   $csharpLabel

El método ToStream() crea un MemoryStream que contiene el archivo Excel completo, el cual el método File() de .NET Core devuelve con el tipo MIME adecuado. Este patrón funciona de forma idéntica para controladores MVC, controladores API y API mínimas. El navegador activa automáticamente una descarga de archivos con el nombre de archivo especificado, lo que permite a los usuarios guardar localmente el archivo Excel generado.

Para aplicaciones con mucho tráfico, considere la posibilidad de generar informes de forma asíncrona y almacenar los resultados en caché cuando los datos subyacentes no cambien con frecuencia; este enfoque mejora significativamente el rendimiento. La documentación sobre conversión de formatos cubre escenarios de exportación adicionales, incluidos los archivos protegidos con contraseña.


¿En qué se diferencia la biblioteca IronXL de otras bibliotecas de Excel for .NET?

Existen varias bibliotecas para la manipulación de Excel en .NET, cada una con diferentes puntos fuertes. La siguiente tabla muestra una comparación entre ellas según los criterios más importantes para las aplicaciones de producción:

Comparación de bibliotecas de Excel for .NET destinadas al desarrollo con .NET Core
Función IronXL Alternativas de código abierto
Se requiere la instalación de Microsoft Office No No
Soporte Técnico Sí (equipo de ingeniería disponible 24/5) Basado en la comunidad
Multipropósito (.NET Core) Soporte completo Varía según la biblioteca
Motor de cálculo de fórmulas Más de 150 funciones Limitada o nula
Modelo de licencia Comercial con prueba gratuita Varios proyectos de código abierto

IronXL destaca en entornos empresariales que requieren un soporte técnico fiable, documentación y actualizaciones constantes. La biblioteca gestiona con soltura los casos extremos —archivos dañados, fórmulas complejas y grandes conjuntos de datos— en los que las alternativas de código abierto pueden tener dificultades. Para los equipos que dan prioridad a la velocidad de desarrollo y a la fiabilidad de la producción, el respaldo comercial de IronXL ofrece tranquilidad.

Según los debates en Stack Overflow, los desarrolladores citan con frecuencia la simplicidad de la API y la calidad de la documentación como factores decisivos a la hora de elegir bibliotecas Excel para sus proyectos .NET Core. La Fundación .NET también destaca la implementación multiplataforma como una prioridad para el desarrollo moderno de .NET, lo que hace que las bibliotecas independientes de Office sean esenciales para soluciones mantenibles.

Para equipos preocupados por la seguridad: IronXL funciona de forma independiente de Microsoft Office y evita Office Interop, lo que minimiza el riesgo de vulnerabilidades externas. La compatibilidad integrada con el cifrado y la protección con contraseña le permite proteger los archivos Excel generados, garantizando que solo los usuarios autorizados puedan acceder o editar hojas de cálculo y datos críticos. Consulte las opciones de licencia de IronXL para encontrar el plan que mejor se adapte a su equipo.


¿Cómo gestionas el rendimiento a gran escala?

Cuando su aplicación genera archivos Excel para muchos usuarios simultáneos o procesa grandes conjuntos de datos, la planificación del rendimiento se vuelve fundamental. IronXL gestiona libros de trabajo de gran tamaño de forma eficiente, ya que opera íntegramente en memoria sin generar procesos de Office ni objetos COM. Esta arquitectura mantiene predecible la carga de la CPU y la memoria.

Estrategias clave de rendimiento

En el caso de informes con gran volumen de datos, rellene las celdas de forma masiva en lugar de hacerlo una por una. Escribir en un rango utilizando la notación entre corchetes sheet["A1:Z1000"] puede ser significativamente más rápido que iterar por celdas individuales al establecer valores uniformes. Para datos heterogéneos, utilice bucles con interpolación de cadenas para el direccionamiento dinámico de celdas.

Para los puntos finales de .NET Core que generan informes bajo demanda, considere la posibilidad de almacenar en caché las matrices de bytes resultantes o la salida MemoryStream utilizando IMemoryCache o una caché distribuida como Redis. Cuando los datos subyacentes no cambian entre solicitudes, los archivos Excel almacenados en caché se pueden devolver inmediatamente sin necesidad de regenerarlos. Esta estrategia resulta especialmente eficaz para las exportaciones de paneles de control y los informes programados.

La generación multihilo es segura con IronXL cuando cada hilo opera en su propia instancia WorkBook. Evite compartir instancias de libros o hojas de cálculo entre subprocesos sin sincronización. Para el procesamiento de tareas en segundo plano, bibliotecas como Hangfire o Quartz.NET funcionan junto con IronXL for .NET para la generación programada de informes, lo que permite pregenerar archivos durante las horas de menor actividad.

Para los conjuntos de datos más grandes, considere dividir los datos en varias hojas de cálculo en lugar de crear hojas únicas con decenas de miles de filas. La documentación de DataTable de exportación muestra patrones eficientes para la transferencia masiva de datos desde fuentes ADO.NET. En la referencia completa de la API hay disponibles ejemplos de código adicionales que abarcan escenarios avanzados, como la lectura de archivos Excel existentes o el trabajo con libros protegidos con contraseña.


¿Cuales son tus próximos pasos?

La creación de hojas de cálculo de Excel en .NET Core con IronXL convierte lo que antes era una tarea con muchas dependencias en una sencilla operación de .NET. Desde la manipulación básica de celdas hasta cálculos con fórmulas y formato Professional, la biblioteca ofrece un conjunto completo de herramientas para la automatización de hojas de cálculo que se ejecuta en cualquier lugar donde se ejecute .NET 10: servidores Windows, contenedores Linux o plataformas en la nube.

La arquitectura multiplataforma garantiza un comportamiento idéntico en máquinas de desarrollo y entornos de producción, eliminando los problemas de "funciona en mi máquina" habituales en las soluciones Office Interop. Empiece con el comando de instalación de NuGet, cree su primer libro de trabajo y continúe a partir de ahí utilizando los patrones que se muestran a lo largo de esta guía.

Descarga una versión de prueba gratuita de 30 días para explorar todas las funciones sin limitaciones, o consulta las opciones de licencia para la implementación en producción. Explora los ejemplos de código de IronXL para ver más escenarios en acción y consulta el centro de documentación de IronXL para obtener la referencia completa de la API y las guías de configuración avanzada.

Preguntas Frecuentes

¿Cuáles son los beneficios de usar IronXL para la generación de hojas de cálculo de Excel en .NET Core?

IronXL permite a los desarrolladores crear archivos de Excel mediante programación sin necesidad de Microsoft Office u Office Interop, ofreciendo compatibilidad multiplataforma en Windows, Linux y macOS. Esto lo hace ideal para aplicaciones modernas basadas en datos.

¿Puede utilizarse IronXL en aplicaciones ASP.NET Core?

Sí, IronXL puede integrarse en aplicaciones ASP.NET Core, lo que permite potentes posibilidades de automatización como informes financieros, seguimiento de inventario y exportación de datos.

¿Es posible generar hojas de cálculo Excel en aplicaciones web utilizando IronXL?

Sí. IronXL admite la generación de hojas de Excel y la funcionalidad de descarga en aplicaciones web, lo que mejora la experiencia del usuario al permitirles exportar e interactuar con tablas de datos complejas.

¿Requiere IronXL la instalación de Microsoft Office?

No, IronXL no requiere la instalación de Microsoft Office. Funciona independientemente de Office Interop, lo que simplifica la implantación y la integración.

¿Cómo mejora IronXL la accesibilidad a los datos en las aplicaciones .NET Core?

IronXL mejora la accesibilidad a los datos permitiendo a los desarrolladores generar hojas de cálculo Excel mediante programación, lo que facilita a los usuarios la interacción y la extracción de información a partir de conjuntos de datos complejos.

¿Se puede implementar IronXL en entornos en la nube como Azure?

Sí, IronXL se puede implementar en entornos de nube como Azure y contenedores Docker, lo que lo hace adecuado para aplicaciones escalables basadas en la nube.

¿Es IronXL compatible con macOS y Linux?

IronXL es totalmente compatible con macOS y Linux, proporcionando una solución multiplataforma para la generación de hojas de cálculo Excel en aplicaciones .NET.

¿Qué tipos de aplicaciones se benefician del uso de IronXL?

Las aplicaciones que requieren soluciones basadas en datos, como informes financieros, gestión de inventarios y cuadros de mando automatizados, se benefician enormemente del uso de IronXL para la generación de hojas de cálculo de Excel.

¿Cómo mejora IronXL la experiencia del usuario en las aplicaciones web?

IronXL mejora la experiencia del usuario al permitir la exportación de tablas de datos complejas a hojas de cálculo de Excel, haciendo que los datos sean más accesibles y portátiles para los usuarios finales.

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

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame