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
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 usar con una sola directiva using. La biblioteca 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.
¿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")
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() agrega hojas de trabajo con nombre donde viven los datos de Excel -- cada libro de trabajo puede contener múltiples hojas individuales para organizar datos relacionados.
Los valores de las celdas se establecen utilizando la notación de corchetes que refleja el sistema de direccionamiento de Excel -- sheet["A1"] se dirige 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
¿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")
La interpolación de cadenas ($"A{row}") permite el direccionamiento dinámico de celdas dentro de bucles, lo que facilita el rellenado programático de filas a partir de cualquier fuente de datos. La sintaxis de rango sheet["D2:D7"] aplica valores a varias celdas simultáneamente, lo que resulta útil para columnas de estado, valores predeterminados o 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")
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
¿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")
La propiedad Style expone opciones de formato que coinciden con las capacidades de Microsoft Excel. Los colores de fondo aceptan 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 el caso de las hojas de cálculo de Excel con muchos datos, CreateFreezePane(0, 1) mantiene visibles los encabezados mientras se desplaza la hoja, una sutil mejora que facilita considerablemente el uso de grandes conjuntos de datos. La configuración de impresión a través de sheet.PrintSetup gestiona la orientación, los márgenes y la escala 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")
La propiedad Formula acepta 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 inmediatamente a través de propiedades escritas como DecimalValue, IntValue o StringValue. Sin llamar a EvaluateAll(), las fórmulas se guardan correctamente y calculan cuando se abren en Excel, pero el acceso programático a los resultados requiere una evaluación previa.
Resultado
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()
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
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
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
El método ToStream() crea un MemoryStream que contiene el archivo Excel completo, que el método File() de ASP.NET Core devuelve con el tipo MIME apropiado. 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 para .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:
| 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
Para informes con muchos datos, rellene las celdas en bloque en lugar de una por una. Escribir en un rango utilizando la notación de corchetes sheet["A1:Z1000"] puede ser significativamente más rápido que iterar a través de 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 ASP.NET Core que generan informes bajo demanda, considere 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.



