Cómo crear archivos de Excel en C# sin interoperabilidad
Aprende a generar archivos de Excel en C# usando IronXL, una potente biblioteca de Excel .NET que crea, lee y edita hojas de cálculo sin dependencias de Microsoft Office. Este tutorial completo te guía a través de la creación de libros de Excel de forma programática con ejemplos de código paso a paso.
como-titulo:2(Inicio rápido: Creación simple de libro de Excel en una línea)
Usa IronXL para crear rápidamente un nuevo archivo de Excel: solo elige un formato, añade una hoja, establece cualquier valor de celda y guarda. Es la forma más rápida de generar archivos XLSX con llamadas a API intuitivas y sin problemas de interop.
Empieza a crear PDF con NuGet ahora:
Instalar IronXL con el gestor de paquetes NuGet
Copie y ejecute este fragmento de código.
WorkBook book = IronXL.WorkBook.Create(IronXL.ExcelFileFormat.XLSX); book.CreateWorkSheet("Sheet1")["A1"].Value = "Hello World"; book.SaveAs("MyFile.xlsx");Despliegue para probar en su entorno real
Empieza a utilizar IronXL en tu proyecto hoy mismo con una prueba gratuita
Resumen
Flujo de trabajo mínimo (5 pasos)
- Descargue la biblioteca C# para crear archivos Excel y CSV
- Crear una aplicación web de proyecto ASP.NET
- Crear un libro de Excel con IronXL
- Establecer valores de celda en una hoja de cálculo de Excel
- Aplicar formato y establecer colores de fondo
- Usar fórmulas en las celdas
- Establecer las propiedades de la hoja de trabajo y de impresión
- Guarde su libro de Excel
¿Qué es IronXL y por qué utilizarlo para la creación de archivos Excel?
IronXL es una API de Excel intuitiva para C# y VB que te permite leer, editar y crear archivos de hojas de cálculo de Excel en .NET con un rendimiento excepcional. A diferencia de los enfoques tradicionales, no es necesario instalar Microsoft Office ni usar Excel Interop, lo que hace que la implementación sea más simple y confiable.
IronXL es totalmente compatible con .NET 9, .NET 8, .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS y ambientes de Azure.
Características de IronXL
- Soporte humano directamente de nuestro equipo de desarrollo .NET
- Instalación rápida con Microsoft Visual Studio
- GRATIS para desarrollo. Licencias desde $799
¿Cómo puedo crear y guardar rápidamente un archivo de Excel?
Instala IronXL a través de NuGet o descarga el DLL directamente.
using IronXL;
// Create a new Excel workbook with XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet to the workbook
var workSheet = workBook.CreateWorkSheet("example_sheet");
// Set individual cell values using intuitive syntax
workSheet["A1"].Value = "Example";
// Set multiple cells at once using range syntax
workSheet["A2:A4"].Value = 5;
// Apply cell styling - set background color using hex code
workSheet["A5"].Style.SetBackgroundColor("#f0f0f0");
// Make text bold for better visibility
workSheet["A5:A6"].Style.Font.Bold = true;
// Add Excel formula to calculate sum
workSheet["A6"].Formula = "=SUM(A2:A4)";
// Calculate all formulas to show results
workSheet.EvaluateAll();
// Verify formula calculation worked correctly
if (workSheet["A6"].IntValue == 15) // Sum of three cells with value 5
{
Console.WriteLine("Formula calculation successful!");
}
// Save the Excel file to disk
workBook.SaveAs("example_workbook.xlsx");using IronXL;
// Create a new Excel workbook with XLSX format
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet to the workbook
var workSheet = workBook.CreateWorkSheet("example_sheet");
// Set individual cell values using intuitive syntax
workSheet["A1"].Value = "Example";
// Set multiple cells at once using range syntax
workSheet["A2:A4"].Value = 5;
// Apply cell styling - set background color using hex code
workSheet["A5"].Style.SetBackgroundColor("#f0f0f0");
// Make text bold for better visibility
workSheet["A5:A6"].Style.Font.Bold = true;
// Add Excel formula to calculate sum
workSheet["A6"].Formula = "=SUM(A2:A4)";
// Calculate all formulas to show results
workSheet.EvaluateAll();
// Verify formula calculation worked correctly
if (workSheet["A6"].IntValue == 15) // Sum of three cells with value 5
{
Console.WriteLine("Formula calculation successful!");
}
// Save the Excel file to disk
workBook.SaveAs("example_workbook.xlsx");Imports IronXL
' Create a new Excel workbook with XLSX format
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add a worksheet to the workbook
Private workSheet = workBook.CreateWorkSheet("example_sheet")
' Set individual cell values using intuitive syntax
Private workSheet("A1").Value = "Example"
' Set multiple cells at once using range syntax
Private workSheet("A2:A4").Value = 5
' Apply cell styling - set background color using hex code
workSheet("A5").Style.SetBackgroundColor("#f0f0f0")
' Make text bold for better visibility
workSheet("A5:A6").Style.Font.Bold = True
' Add Excel formula to calculate sum
workSheet("A6").Formula = "=SUM(A2:A4)"
' Calculate all formulas to show results
workSheet.EvaluateAll()
' Verify formula calculation worked correctly
If workSheet("A6").IntValue = 15 Then ' Sum of three cells with value 5
Console.WriteLine("Formula calculation successful!")
End If
' Save the Excel file to disk
workBook.SaveAs("example_workbook.xlsx")Este código demuestra las características clave de IronXL: crear libros, agregar hojas de trabajo, establecer valores y estilos de celda, usar fórmulas y guardar archivos. La clase WorkBook sirve como punto de entrada para todas las operaciones de Excel, mientras que la clase WorkSheet proporciona métodos para manipular hojas individuales.
Paso 1
1. ¿Cómo instalo la biblioteca C# IronXL?
Instala la biblioteca IronXL usando NuGet (Install-Package IronXL) o descargando el DLL directamente.
Comience a usar IronXL en su proyecto hoy con una prueba gratuita.
¿Cómo puedo instalar IronXL usando NuGet?
Hay tres formas de instalar el paquete IronXL NuGet:
- Administrador de paquetes de Visual Studio
- Consola de comando para desarrolladores
- Descarga directa desde NuGet.org
Instalación de Visual Studio
Visual Studio proporciona el Administrador de paquetes NuGet para una fácil instalación de paquetes. Accédelo a través del menú Proyecto o haciendo clic derecho en tu proyecto en Solution Explorer.
Después de hacer clic en Administrar paquetes NuGet, busca el paquete IronXL.Excel e instálalo.
Instalación del símbolo del sistema para desarrolladores
Usa la Consola del Administrador de paquetes con este comando:
Install-Package IronXL.Excel
Instalación mediante descarga directa
- Navegar a: https://www.nuget.org/packages/IronXL.Excel/
- Hacer clic en Descargar paquete
- Hacer doble clic en el paquete descargado
- Recargar tu proyecto de Visual Studio
¿Cómo instalo IronXL descargando la DLL?
Descarga IronXL directamente desde: <https://Iron Software.com/csharp/excel/>
Referencia la biblioteca en tu proyecto:
- Hacer clic derecho en la Solución en el Explorador de Soluciones
- Seleccionar Referencias
- Buscar la biblioteca
IronXL.dll - Haz clic en OK
¡Vamos!
Ahora estás listo para explorar las potentes funciones de manipulación de Excel de IronXL.
Tutoriales prácticos
2. ¿Cómo creo un proyecto ASP.NET para la generación de Excel?
Sigue estos pasos para crear un sitio web ASP.NET:
- Abre Visual Studio
- Haga clic en Archivo > Nuevo proyecto
- Selecciona Web bajo Visual C# en la lista de tipos de proyectos
Selecciona Aplicación Web ASP.NET

Figura 1 – Create new ASP.NET project
- Haz clic en OK
Selecciona plantilla de formularios Web

Figura 2 – Select Web Forms template
- Haz clic en OK
Con tu proyecto listo, instala IronXL para comenzar a crear archivos de Excel de manera programática.
3. ¿Cómo creo un libro de Excel en C#?
Crear un nuevo libro de Excel con IronXL requiere solo una línea de código:
using IronXL;
// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);using IronXL;
// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);Imports IronXL
' Create workbook with XLSX format (recommended for modern Excel)
Private workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Alternative: Create legacy XLS format for older Excel versions
Private legacyWorkbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)El método WorkBook.Create admite formatos XLS (Excel 97-2003) y XLSX (Excel 2007+). Se recomienda XLSX para un mejor rendimiento y tamaños de archivo más pequeños.
3.1. ¿Cómo agrego una hoja de trabajo a mi libro de trabajo?
Añadir hojas de trabajo es sencillo:
// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");
// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");
// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");
// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");
// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");' Create a worksheet with custom name for budget tracking
Dim budgetSheet As WorkSheet = workbook.CreateWorkSheet("2020 Budget")
' Add multiple worksheets for different purposes
Dim salesSheet As WorkSheet = workbook.CreateWorkSheet("Sales Data")
Dim inventorySheet As WorkSheet = workbook.CreateWorkSheet("Inventory")
' Access existing worksheet by name
Dim existingSheet As WorkSheet = workbook.GetWorkSheet("2020 Budget")Un libro contiene una o más hojas de trabajo. Cada hoja de trabajo se compone de filas y columnas, con celdas en sus intersecciones. Usa el método CreateWorkSheet para agregar nuevas hojas a tu libro.
4. ¿Cómo establezco valores de celda en Excel?
4.1. ¿Cómo puedo establecer valores de celda manualmente?
Establecer valores de celda individuales utiliza una sintaxis intuitiva similar a Excel:
// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";
// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m; // Decimal for currency
workSheet["A3"].Value = DateTime.Now; // Date values
workSheet["A4"].Value = true; // Boolean values// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";
// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m; // Decimal for currency
workSheet["A3"].Value = DateTime.Now; // Date values
workSheet["A4"].Value = true; // Boolean values' Set month names in first row for annual budget spreadsheet
workSheet("A1").Value = "January"
workSheet("B1").Value = "February"
workSheet("C1").Value = "March"
workSheet("D1").Value = "April"
workSheet("E1").Value = "May"
workSheet("F1").Value = "June"
workSheet("G1").Value = "July"
workSheet("H1").Value = "August"
workSheet("I1").Value = "September"
workSheet("J1").Value = "October"
workSheet("K1").Value = "November"
workSheet("L1").Value = "December"
' Set different data types - IronXL handles conversion automatically
workSheet("A2").Value = 1500.50D ' Decimal for currency
workSheet("A3").Value = DateTime.Now ' Date values
workSheet("A4").Value = True ' Boolean valuesLa propiedad Cell.Value acepta varios tipos de datos, incluidos cadenas, números, fechas y booleanos. IronXL formatea automáticamente las celdas según el tipo de dato.
4.2. ¿Cómo puedo establecer valores de celda dinámicamente?
La configuración dinámica de valores es perfecta para aplicaciones basadas en datos:
// Initialize random number generator for sample data
Random r = new Random();
// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
// Set different budget categories with increasing ranges
workSheet[$"A{i}"].Value = r.Next(1, 1000); // Office Supplies
workSheet[$"B{i}"].Value = r.Next(1000, 2000); // Utilities
workSheet[$"C{i}"].Value = r.Next(2000, 3000); // Rent
workSheet[$"D{i}"].Value = r.Next(3000, 4000); // Salaries
workSheet[$"E{i}"].Value = r.Next(4000, 5000); // Marketing
workSheet[$"F{i}"].Value = r.Next(5000, 6000); // IT Services
workSheet[$"G{i}"].Value = r.Next(6000, 7000); // Travel
workSheet[$"H{i}"].Value = r.Next(7000, 8000); // Training
workSheet[$"I{i}"].Value = r.Next(8000, 9000); // Insurance
workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}
// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row// Initialize random number generator for sample data
Random r = new Random();
// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
// Set different budget categories with increasing ranges
workSheet[$"A{i}"].Value = r.Next(1, 1000); // Office Supplies
workSheet[$"B{i}"].Value = r.Next(1000, 2000); // Utilities
workSheet[$"C{i}"].Value = r.Next(2000, 3000); // Rent
workSheet[$"D{i}"].Value = r.Next(3000, 4000); // Salaries
workSheet[$"E{i}"].Value = r.Next(4000, 5000); // Marketing
workSheet[$"F{i}"].Value = r.Next(5000, 6000); // IT Services
workSheet[$"G{i}"].Value = r.Next(6000, 7000); // Travel
workSheet[$"H{i}"].Value = r.Next(7000, 8000); // Training
workSheet[$"I{i}"].Value = r.Next(8000, 9000); // Insurance
workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}
// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row' Initialize random number generator for sample data
Dim r As New Random()
' Populate cells with random budget data for each month
For i As Integer = 2 To 11
' Set different budget categories with increasing ranges
workSheet($"A{i}").Value = r.Next(1, 1000) ' Office Supplies
workSheet($"B{i}").Value = r.Next(1000, 2000) ' Utilities
workSheet($"C{i}").Value = r.Next(2000, 3000) ' Rent
workSheet($"D{i}").Value = r.Next(3000, 4000) ' Salaries
workSheet($"E{i}").Value = r.Next(4000, 5000) ' Marketing
workSheet($"F{i}").Value = r.Next(5000, 6000) ' IT Services
workSheet($"G{i}").Value = r.Next(6000, 7000) ' Travel
workSheet($"H{i}").Value = r.Next(7000, 8000) ' Training
workSheet($"I{i}").Value = r.Next(8000, 9000) ' Insurance
workSheet($"J{i}").Value = r.Next(9000, 10000) ' Equipment
workSheet($"K{i}").Value = r.Next(10000, 11000) ' Research
workSheet($"L{i}").Value = r.Next(11000, 12000) ' Misc
Next i
' Alternative: Set range of cells with same value
workSheet("A13:L13").Value = 0 ' Initialize totals rowLa interpolación de cadenas ($"A{i}") facilita la referencia a celdas dinámicamente. El indexador Range admite tanto celdas individuales como rangos.
4.3. ¿Cómo puedo completar Excel desde una base de datos?
Cargar datos desde bases de datos a Excel es un requisito común:
using System.Data;
using System.Data.SqlClient;
using IronXL;
// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";
// Create DataSet to hold query results
DataSet salesData = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
// Fill DataSet with sales information
adapter.Fill(salesData);
}
// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";
// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";
// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
int excelRow = row + 2; // Start from row 2 (after headers)
workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);
// Format currency columns
workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}
// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";using System.Data;
using System.Data.SqlClient;
using IronXL;
// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";
// Create DataSet to hold query results
DataSet salesData = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
// Fill DataSet with sales information
adapter.Fill(salesData);
}
// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";
// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";
// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
int excelRow = row + 2; // Start from row 2 (after headers)
workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);
// Format currency columns
workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}
// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";Imports System.Data
Imports System.Data.SqlClient
Imports IronXL
' Database connection setup for retrieving sales data
Private connectionString As String = "Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true"
Private query As String = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales"
' Create DataSet to hold query results
Private salesData As New DataSet()
Using connection As New SqlConnection(connectionString)
Using adapter As New SqlDataAdapter(query, connection)
' Fill DataSet with sales information
adapter.Fill(salesData)
End Using
End Using
' Write headers for database columns
workSheet("A1").Value = "Product Name"
workSheet("B1").Value = "Quantity"
workSheet("C1").Value = "Unit Price"
workSheet("D1").Value = "Total Sales"
' Apply header formatting
workSheet("A1:D1").Style.Font.Bold = True
workSheet("A1:D1").Style.SetBackgroundColor("#4472C4")
workSheet("A1:D1").Style.Font.FontColor = "#FFFFFF"
' Populate Excel with database records
Dim salesTable As DataTable = salesData.Tables(0)
For row As Integer = 0 To salesTable.Rows.Count - 1
Dim excelRow As Integer = row + 2 ' Start from row 2 (after headers)
workSheet($"A{excelRow}").Value = salesTable.Rows(row)("ProductName").ToString()
workSheet($"B{excelRow}").Value = Convert.ToInt32(salesTable.Rows(row)("Quantity"))
workSheet($"C{excelRow}").Value = Convert.ToDecimal(salesTable.Rows(row)("UnitPrice"))
workSheet($"D{excelRow}").Value = Convert.ToDecimal(salesTable.Rows(row)("TotalSales"))
' Format currency columns
workSheet($"C{excelRow}").FormatString = "$#,##0.00"
workSheet($"D{excelRow}").FormatString = "$#,##0.00"
Next row
' Add summary row with formulas
Dim summaryRow As Integer = salesTable.Rows.Count + 2
workSheet($"A{summaryRow}").Value = "TOTAL"
workSheet($"B{summaryRow}").Formula = $"=SUM(B2:B{summaryRow-1})"
workSheet($"D{summaryRow}").Formula = $"=SUM(D2:D{summaryRow-1})"Este ejemplo demuestra la lectura de datos de Excel desde bases de datos, aplicando formato y usando fórmulas para cálculos. La propiedad FormatString permite el formato de números personalizado al igual que en Excel.
5. ¿Cómo aplico formato a las celdas de Excel?
5.1. ¿Cómo puedo configurar colores de fondo en Excel?
El estilo de celdas mejora la legibilidad y el atractivo visual:
// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");
// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February
// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text
// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
if (row % 2 == 0)
{
workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
}
}// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");
// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February
// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text
// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
if (row % 2 == 0)
{
workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
}
}' Set header row background to light gray using hex color
workSheet("A1:L1").Style.SetBackgroundColor("#d3d3d3")
' Apply different colors for data categorization
workSheet("A2:A11").Style.SetBackgroundColor("#E7F3FF") ' Light blue for January
workSheet("B2:B11").Style.SetBackgroundColor("#FFF2CC") ' Light yellow for February
' Highlight important cells with bold colors
workSheet("L12").Style.SetBackgroundColor("#FF0000") ' Red for totals
workSheet("L12").Style.Font.FontColor = "#FFFFFF" ' White text
' Create alternating row colors for better readability
For row As Integer = 2 To 11
If row Mod 2 = 0 Then
workSheet($"A{row}:L{row}").Style.SetBackgroundColor("#F2F2F2")
End If
Next rowEl método Style.SetBackgroundColor acepta códigos de colores hex. Combina colores de fondo con colores de fuente para hojas de cálculo de apariencia profesional.
5.2. ¿Cómo creo bordes en Excel?
Los bordes ayudan a definir regiones de datos y mejorar la estructura:
using IronXL;
using IronXL.Styles;
// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;
// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;
// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;
// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue bordersusing IronXL;
using IronXL.Styles;
// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;
// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;
// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;
// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue bordersImports IronXL
Imports IronXL.Styles
' Create header border - thick bottom line to separate from data
workSheet("A1:L1").Style.TopBorder.SetColor("#000000")
workSheet("A1:L1").Style.TopBorder.Type = BorderType.Thick
workSheet("A1:L1").Style.BottomBorder.SetColor("#000000")
workSheet("A1:L1").Style.BottomBorder.Type = BorderType.Thick
' Add right border to last column
workSheet("L2:L11").Style.RightBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.Type = BorderType.Medium
' Create bottom border for data area
workSheet("A11:L11").Style.BottomBorder.SetColor("#000000")
workSheet("A11:L11").Style.BottomBorder.Type = BorderType.Medium
' Apply complete border around summary section
Dim summaryRange = workSheet("A12:L12")
summaryRange.Style.TopBorder.Type = BorderType.Double
summaryRange.Style.BottomBorder.Type = BorderType.Double
summaryRange.Style.LeftBorder.Type = BorderType.Thin
summaryRange.Style.RightBorder.Type = BorderType.Thin
summaryRange.Style.SetBorderColor("#0070C0") ' Blue bordersIronXL admite varios tipos de borde incluidos delgado, medio, grueso, doble, punteado y discontinuo. Cada lado del borde puede ser estilizado de forma independiente.
6. ¿Cómo uso fórmulas de Excel en C#?
IronXL proporciona soporte de fórmulas potentes con cálculo automático:
// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();
// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;
// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";
// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";
// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";
// Ensure all formulas calculate
workSheet.EvaluateAll();// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();
// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;
// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";
// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";
// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";
// Ensure all formulas calculate
workSheet.EvaluateAll();' Use built-in aggregation functions for ranges
Dim sum As Decimal = workSheet("A2:A11").Sum()
Dim avg As Decimal = workSheet("B2:B11").Avg()
Dim max As Decimal = workSheet("C2:C11").Max()
Dim min As Decimal = workSheet("D2:D11").Min()
' Assign calculated values to cells
workSheet("A12").Value = sum
workSheet("B12").Value = avg
workSheet("C12").Value = max
workSheet("D12").Value = min
' Or use Excel formulas directly
workSheet("A12").Formula = "=SUM(A2:A11)"
workSheet("B12").Formula = "=AVERAGE(B2:B11)"
workSheet("C12").Formula = "=MAX(C2:C11)"
workSheet("D12").Formula = "=MIN(D2:D11)"
' Complex formulas with multiple functions
workSheet("E12").Formula = "=IF(SUM(E2:E11)>50000,""Over Budget"",""On Track"")"
workSheet("F12").Formula = "=SUMIF(F2:F11,"">5000"")"
' Percentage calculations
workSheet("G12").Formula = "=G11/SUM(G2:G11)*100"
workSheet("G12").FormatString = "0.00%"
' Ensure all formulas calculate
workSheet.EvaluateAll()La clase Range ofrece métodos como Sum(), Avg(), Max() y Min() para cálculos rápidos. Para escenarios más complejos, usa la propiedad Formula para establecer fórmulas de Excel directamente.
7. ¿Cómo configuro las propiedades de la hoja de cálculo y de impresión?
Usa IronXL para proteger hojas individuales, congelar filas y columnas, y establecer opciones de formato de impresión.
7.1. ¿Cómo puedo configurar las propiedades de la hoja de cálculo?
Protege hojas de trabajo y controla las opciones de visualización:
// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");
// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column
// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden
// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;
// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");
// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column
// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden
// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;
// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom' Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123")
' Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1) ' Freeze first row
' workSheet.CreateFreezePane(1, 1); // Freeze first row and column
' Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible ' or Hidden, VeryHidden
' Configure gridlines and headers
workSheet.ShowGridLines = True
workSheet.ShowRowColHeaders = True
' Set zoom level for better viewing
workSheet.Zoom = 85 ' 85% zoomLa protección de hojas previene modificaciones accidentales mientras que congelar paneles mantiene filas o columnas importantes visibles durante el desplazamiento.
7.2. ¿Cómo configuro los ajustes de página e impresión?
Configura opciones de impresión profesionales a través de IronXL's:
using IronXL.Printing;
// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");
// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;
// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;
// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;
// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;
// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;
// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numberingusing IronXL.Printing;
// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");
// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;
// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;
// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;
// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;
// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;
// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numberingImports IronXL.Printing
' Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12")
' Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape
' Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4
' Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5
workSheet.PrintSetup.RightMargin = 0.5
workSheet.PrintSetup.TopMargin = 0.75
workSheet.PrintSetup.BottomMargin = 0.75
' Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3
workSheet.PrintSetup.FooterMargin = 0.3
' Scale to fit on one page
workSheet.PrintSetup.FitToPage = True
workSheet.PrintSetup.FitToHeight = 1
workSheet.PrintSetup.FitToWidth = 1
' Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report"
workSheet.Footer.Left = DateTime.Now.ToShortDateString()
workSheet.Footer.Right = "Page &P of &N" ' Page numberingLa clase PrintSetup ofrece opciones de configuración de impresión completas que coinciden con los ajustes de impresión de Excel.
8. ¿Cómo guardo mi libro de Excel?
Guarda tu libro en varios formatos:
// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");
// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");
// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");
// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");
// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
workBook.SaveAs(stream);
byte[] excelData = stream.ToArray();
// Send to client or save to cloud
}
// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");
// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");
// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");
// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");
// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
workBook.SaveAs(stream);
byte[] excelData = stream.ToArray();
// Send to client or save to cloud
}
// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);' Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx")
' Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls")
' Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv")
' Save as JSON for web applications
workBook.SaveAsJson("Budget.json")
' Save to stream for web downloads or cloud storage
Using stream = New MemoryStream()
workBook.SaveAs(stream)
Dim excelData() As Byte = stream.ToArray()
' Send to client or save to cloud
End Using
' Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8)IronXL admite múltiples formatos de exportación incluidos XLSX, XLS, CSV, TSV y JSON. El método SaveAs determina automáticamente el formato a partir de la extensión del archivo.
Resumen
Este tutorial demostró cómo crear archivos de Excel en C# sin dependencias de Microsoft Office utilizando IronXL. Aprendiste operaciones esenciales de Excel incluyendo la creación de libros, manipulación de celdas, formato, uso de fórmulas y varias opciones de guardado. La API intuitiva de IronXL simplifica la automatización de Excel para desarrolladores .NET.
Para funciones más avanzadas, explora la fusión de celdas y la creación de gráficos. ¿Listo para usar IronXL en producción? Empieza tu prueba gratuita o ve las opciones de licencias.
Tutorial de acceso rápido
Descargue este tutorial como código fuente de C#
El código fuente C# completo para crear archivos Excel está disponible como un archivo de proyecto de Visual Studio.
DescargarExplora este tutorial en GitHub
El código fuente de este proyecto está disponible en C# y VB.NET en GitHub.
Utilice este código para empezar fácilmente a crear archivos de Excel en tan solo unos minutos. El proyecto se guarda como un proyecto de Microsoft Visual Studio, pero es compatible con cualquier IDE .NET.
Crear archivos de Excel en C# en GitHubLea la referencia de la API de IronXL
Explore la Referencia de API para IronXL, que detalla todas las características, espacios de nombres, clases, métodos y propiedades para una manipulación integral de Excel en .NET.
Ver la referencia de la APIPreguntas Frecuentes
¿Cómo puedo crear archivos de Excel en C# sin usar Interop?
Puedes crear archivos de Excel sin Interop usando IronXL, que proporciona una API sencilla: WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX). Este enfoque funciona en cualquier plataforma .NET sin requerir la instalación de Microsoft Office.
¿Qué plataformas son compatibles con la creación de archivos de Excel con C#?
IronXL es compatible con la creación de archivos Excel en .NET 10, .NET 9, .NET 8, .NET Core, .NET Framework 4.6.2+, funcionando en entornos de Windows, macOS, Linux, Docker, Azure y AWS.
¿Cómo instalo una biblioteca C# para la generación de Excel?
Instala IronXL a través del Administrador de Paquetes NuGet en Visual Studio, usa el comando PM> Install-Package IronXL.Excel, o descárgalo directamente desde nuget.org.
¿Cómo creo un nuevo libro de Excel programáticamente?
Crea un libro usando IronXL con WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX), luego añade hojas de trabajo usando workbook.CreateWorkSheet("SheetName").
¿Cómo puedo establecer valores de celdas en una hoja de Excel usando C#?
Establece valores de celdas en IronXL usando una sintaxis intuitiva: worksheet["A1"].Value = "Hello World" o establece rangos: worksheet["A1:A10"].Value = 100.
¿Puedo aplicar formato a las celdas de Excel programáticamente?
Sí, IronXL admite un formato integral que incluye colores de fondo (cell.Style.SetBackgroundColor("#FF0000")), bordes, fuentes y formatos de números.
¿Cómo uso fórmulas de Excel en C#?
Aplica fórmulas usando la propiedad Formula de IronXL: worksheet["A1"].Formula = "=SUM(B1:B10)", o usa métodos integrados como range.Sum(), range.Avg().
¿Cómo puedo proteger una hoja de Excel con una contraseña?
Protege hojas en IronXL usando worksheet.ProtectSheet("YourPassword") para prevenir modificaciones no autorizadas.
¿Cómo configuro las configuraciones de impresión para archivos de Excel?
Establece propiedades de impresión usando PrintSetup de IronXL: worksheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape y worksheet.SetPrintArea("A1:Z100").
¿Cómo guardo un libro de Excel en diferentes formatos?
Guarda libros usando el método SaveAs de IronXL: workbook.SaveAs("file.xlsx") para XLSX, o utiliza SaveAsCsv(), SaveAsJson() para otros formatos.
¿Cómo lleno una hoja de Excel con datos de una base de datos?
Utiliza IronXL para llenar hojas de trabajo obteniendo datos de una base de datos y estableciéndolos en celdas mediante métodos como worksheet["A1"].Value = dataFromDatabase.
¿Cómo puedo implementar paneles congelados en una hoja de Excel usando C#?
Congela paneles en hojas de trabajo usando IronXL con worksheet.FreezePanes(1, 1) para bloquear la fila superior y la columna más a la izquierda para una navegación más fácil.













