C# Tutorial para crear un archivo Excel
Este tutorial le guiará paso a paso sobre cómo crear un archivo de Excel Workbook en cualquier plataforma que soporte .NET Framework 4.5 o .NET Core. Crear archivos Excel en C# puede ser sencillo, incluso sin depender de la biblioteca heredada Microsoft.Office.Interop.Excel. Utilice IronXL para establecer las propiedades de la hoja de cálculo, como congelar paneles y protección, establecer las propiedades de impresión y mucho más.
Visión general
Cómo crear un archivo Excel en C#
- 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 la biblioteca C#
- Establecer manualmente los valores de las celdas de una hoja Excel
- Aplicar formato y establecer los colores de fondo de las celdas
- Utilizar fórmulas en celdas
- Establecer propiedades de hoja de cálculo e impresión
- Guardar el libro de Excel
IronXL Crea C# Archivos de Excel en .NET
IronXL es una intuitiva API de Excel para C# y VB que le permite leer, editar y crear archivos de hojas de cálculo Excel en .NET con un rendimiento rapidísimo. No es necesario instalar MS Office ni siquiera Excel Interop.
IronXL es totalmente compatible con .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS y Azure.
Características IronXL:
- Asistencia humana directamente de nuestro equipo de desarrollo .NET
- Instalación rápida con Microsoft Visual Studio
- GRATIS para el desarrollo. Licencias de $599.
Crear y guardar un archivo Excel: Código rápido
https://www.nuget.org/packages/IronXL.Excel/ Como alternativa, el IronXL.dll puede descargarse y añadido a su proyecto.
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-1.cs
using IronXL;
// Default file format is XLSX, we can override it using CreatingOptions
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
var workSheet = workBook.CreateWorkSheet("example_sheet");
workSheet["A1"].Value = "Example";
// Set value to multiple cells
workSheet["A2:A4"].Value = 5;
workSheet["A5"].Style.SetBackgroundColor("#f0f0f0");
// Set style to multiple cells
workSheet["A5:A6"].Style.Font.Bold = true;
// Set formula
workSheet["A6"].Value = "=SUM(A2:A4)";
if (workSheet["A6"].IntValue == workSheet["A2:A4"].IntValue)
{
Console.WriteLine("Basic test passed");
}
workBook.SaveAs("example_workbook.xlsx");
Imports IronXL
' Default file format is XLSX, we can override it using CreatingOptions
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Private workSheet = workBook.CreateWorkSheet("example_sheet")
Private workSheet("A1").Value = "Example"
' Set value to multiple cells
Private workSheet("A2:A4").Value = 5
workSheet("A5").Style.SetBackgroundColor("#f0f0f0")
' Set style to multiple cells
workSheet("A5:A6").Style.Font.Bold = True
' Set formula
workSheet("A6").Value = "=SUM(A2:A4)"
If workSheet("A6").IntValue = workSheet("A2:A4").IntValue Then
Console.WriteLine("Basic test passed")
End If
workBook.SaveAs("example_workbook.xlsx")
Primer paso
1. Descargue la biblioteca IronXL C# GRATUITA
Instalar con NuGet
Install-Package IronXL.Excel
Instalación mediante NuGet
Existen tres formas diferentes de instalar el paquete NuGet de IronXL:
- Visual Studio
- Símbolo del sistema para desarrolladores
Descargue directamente el paquete NuGet
Visual Studio
Visual Studio proporciona el gestor de paquetes NuGet para que lo utilices para instalar paquetes NuGet en tus proyectos. Puede acceder a él a través del menú Proyecto o haciendo clic con el botón derecho del ratón en el Explorador de soluciones. Ambas opciones se muestran a continuación en las figuras 3 y 4.
Luego de hacer clic en Manage NuGet Packages desde cualquiera de las opciones, busque el paquete IronXL.Excel e instálelo como se muestra en la Figura 5.Símbolo del sistema para desarrolladores
Abra el Símbolo del sistema para desarrolladores y siga estos pasos para instalar el paquete IronXL.Excel NuGet:
- Busque el símbolo del sistema para desarrolladores (normalmente se encuentra en la carpeta Visual Studio).
- Escribe el siguiente comando:
- PM > Instalar paquete IronXL.Excel
- Pulse Intro
- Se instalará el paquete.
Vuelva a cargar el proyecto de Visual Studio
Descargue directamente el paquete NuGet
Para descargar el paquete NuGet, siga estos pasos:
- Navegue hasta la siguiente URL: https://www.nuget.org/packages/ironxl.excel/
- Haga clic en Descargar paquete
- Una vez descargado el paquete, haga doble clic en él
Vuelva a cargar el proyecto de Visual Studio
Instalar IronXL mediante descarga directa de la biblioteca
La segunda forma de instalar IronXL es descargándolo directamente desde la siguiente URL: https://ironsoftware.com/csharp/excel/
Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:
- Haga clic con el botón derecho en la solución en el Explorador de soluciones
- Seleccionar referencias
- Buscar la biblioteca IronXL.dll
- Haga clic en OK
¡Vamos!
Ahora que ya estás configurado, podemos empezar a jugar con las increíbles funciones de la biblioteca IronXL!
Tutoriales
2. Crear un proyecto ASP.NET
- Navegue hasta la siguiente URL:
- https://www.nuget.org/packages/ironxl.excel/
- Haga clic en Descargar paquete
- Una vez descargado el paquete, haga doble clic en él
- Vuelva a cargar el proyecto de Visual Studio
Siga los siguientes pasos para crear un sitio web ASP.NET
- Abrir Visual Studio
- Haga clic en Archivo > Nuevo proyecto
- Seleccione Web en Visual C# en el cuadro de lista Tipo de proyecto
Seleccione ASP.NET Web Application, como se muestra a continuación
Figura 1 - Nuevo proyecto- Haga clic en OK
En la siguiente pantalla, seleccione Formularios Web, como se muestra en la Figura 2, debajo de
Figura 2 - Formularios web
Haga clic en OK
Ahora tenemos algo con lo que trabajar. Instala IronXL para empezar a personalizar tu archivo.
3. Crear un libro de Excel
No puede ser más simple crear un nuevo Libro de Excel usando IronXL! Se trata de una línea de código! Sí, de verdad:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-2.cs
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Ambos XLS (versión anterior del archivo Excel) y XLSX (versión actual y más reciente del archivo) formatos de archivo pueden crearse con IronXL.
3.1. Establecer una hoja de cálculo por defecto
Además, es aún más sencillo crear una Hoja de cálculo por defecto:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-3.cs
WorkSheet workSheet = workBook.CreateWorkSheet("2020 Budget");
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("2020 Budget")
"Hoja" en el fragmento de código anterior representa la hoja de cálculo y se puede utilizar para establecer valores de celda y casi todo lo que Excel puede hacer.
En caso de que estés confundido sobre la diferencia entre un Libro de Trabajo y una Hoja de Cálculo, déjame explicártelo:
El Cuaderno de ejercicios contiene hojas de trabajo. Esto significa que puede añadir tantas Hojas de Trabajo como desee en un Libro de Trabajo. En un artículo posterior explicaré cómo hacerlo. Una Hoja de Cálculo contiene Filas y Columnas. La intersección de una Fila y una Columna se denomina Celda, y es lo que manipularás mientras trabajes con Excel.
4. Establecer valores de celda
4.1. Establecer valores de celda manualmente
Para establecer manualmente los valores de las celdas, basta con indicar con qué celda se está trabajando y establecer su valor, como en el siguiente ejemplo:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-4.cs
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";
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"
Aquí, he rellenado las Columnas A a L, y la primera fila de cada una con el nombre de un mes diferente.
4.2. Establecer valores de celda dinámicamente
Establecer valores dinámicamente es casi similar al segmento de código anterior. Lo bueno de esto es que no tienes que codificar la ubicación de la célula. En el siguiente ejemplo de código, crearás un nuevo objeto Random para crear números aleatorios, y luego utilizarás un bucle for para iterar a través del rango de celdas que te gustaría rellenar con valores.
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-5.cs
Random r = new Random();
for (int i = 2 ; i <= 11 ; i++)
{
workSheet["A" + i].Value = r.Next(1, 1000);
workSheet["B" + i].Value = r.Next(1000, 2000);
workSheet["C" + i].Value = r.Next(2000, 3000);
workSheet["D" + i].Value = r.Next(3000, 4000);
workSheet["E" + i].Value = r.Next(4000, 5000);
workSheet["F" + i].Value = r.Next(5000, 6000);
workSheet["G" + i].Value = r.Next(6000, 7000);
workSheet["H" + i].Value = r.Next(7000, 8000);
workSheet["I" + i].Value = r.Next(8000, 9000);
workSheet["J" + i].Value = r.Next(9000, 10000);
workSheet["K" + i].Value = r.Next(10000, 11000);
workSheet["L" + i].Value = r.Next(11000, 12000);
}
Dim r As New Random()
For i As Integer = 2 To 11
workSheet("A" & i).Value = r.Next(1, 1000)
workSheet("B" & i).Value = r.Next(1000, 2000)
workSheet("C" & i).Value = r.Next(2000, 3000)
workSheet("D" & i).Value = r.Next(3000, 4000)
workSheet("E" & i).Value = r.Next(4000, 5000)
workSheet("F" & i).Value = r.Next(5000, 6000)
workSheet("G" & i).Value = r.Next(6000, 7000)
workSheet("H" & i).Value = r.Next(7000, 8000)
workSheet("I" & i).Value = r.Next(8000, 9000)
workSheet("J" & i).Value = r.Next(9000, 10000)
workSheet("K" & i).Value = r.Next(10000, 11000)
workSheet("L" & i).Value = r.Next(11000, 12000)
Next i
Cada celda de A2 a L11 contiene un valor único generado aleatoriamente.
Hablando de valores dinámicos, ¿qué te parece aprender a añadir dinámicamente datos a las celdas directamente desde una base de datos? El siguiente fragmento de código muestra rápidamente cómo se hace, suponiendo que haya configurado correctamente las conexiones a la base de datos.
4.3. Añadir directamente desde una base de datos
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-6.cs
// Create database objects to populate data from database
string contring;
string sql;
DataSet ds = new DataSet("DataSetName");
SqlConnection con;
SqlDataAdapter da;
// Set Database Connection string
contring = @"Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password";
// SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name";
// Open Connection & Fill DataSet
con = new SqlConnection(contring);
da = new SqlDataAdapter(sql, con);
con.Open();
da.Fill(ds);
// Loop through contents of dataset
foreach (DataTable table in ds.Tables)
{
int Count = table.Rows.Count - 1;
for (int j = 12; j <= 21; j++)
{
workSheet["A" + j].Value = table.Rows[Count]["Field_Name_1"].ToString();
workSheet["B" + j].Value = table.Rows[Count]["Field_Name_2"].ToString();
workSheet["C" + j].Value = table.Rows[Count]["Field_Name_3"].ToString();
workSheet["D" + j].Value = table.Rows[Count]["Field_Name_4"].ToString();
workSheet["E" + j].Value = table.Rows[Count]["Field_Name_5"].ToString();
workSheet["F" + j].Value = table.Rows[Count]["Field_Name_6"].ToString();
workSheet["G" + j].Value = table.Rows[Count]["Field_Name_7"].ToString();
workSheet["H" + j].Value = table.Rows[Count]["Field_Name_8"].ToString();
workSheet["I" + j].Value = table.Rows[Count]["Field_Name_9"].ToString();
workSheet["J" + j].Value = table.Rows[Count]["Field_Name_10"].ToString();
workSheet["K" + j].Value = table.Rows[Count]["Field_Name_11"].ToString();
workSheet["L" + j].Value = table.Rows[Count]["Field_Name_12"].ToString();
}
Count++;
}
' Create database objects to populate data from database
Dim contring As String
Dim sql As String
Dim ds As New DataSet("DataSetName")
Dim con As SqlConnection
Dim da As SqlDataAdapter
' Set Database Connection string
contring = "Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password"
' SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name"
' Open Connection & Fill DataSet
con = New SqlConnection(contring)
da = New SqlDataAdapter(sql, con)
con.Open()
da.Fill(ds)
' Loop through contents of dataset
For Each table As DataTable In ds.Tables
Dim Count As Integer = table.Rows.Count - 1
For j As Integer = 12 To 21
workSheet("A" & j).Value = table.Rows(Count)("Field_Name_1").ToString()
workSheet("B" & j).Value = table.Rows(Count)("Field_Name_2").ToString()
workSheet("C" & j).Value = table.Rows(Count)("Field_Name_3").ToString()
workSheet("D" & j).Value = table.Rows(Count)("Field_Name_4").ToString()
workSheet("E" & j).Value = table.Rows(Count)("Field_Name_5").ToString()
workSheet("F" & j).Value = table.Rows(Count)("Field_Name_6").ToString()
workSheet("G" & j).Value = table.Rows(Count)("Field_Name_7").ToString()
workSheet("H" & j).Value = table.Rows(Count)("Field_Name_8").ToString()
workSheet("I" & j).Value = table.Rows(Count)("Field_Name_9").ToString()
workSheet("J" & j).Value = table.Rows(Count)("Field_Name_10").ToString()
workSheet("K" & j).Value = table.Rows(Count)("Field_Name_11").ToString()
workSheet("L" & j).Value = table.Rows(Count)("Field_Name_12").ToString()
Next j
Count += 1
Next table
Sólo tiene que establecer la propiedad Valor de la celda en cuestión con el nombre del campo que desea introducir en la celda.
5. Aplicar formato
5.1. Establecer los colores de fondo de las celdas
Para establecer el color de fondo de una celda o de un rango de celdas, sólo necesitas una línea de código parecida a la siguiente:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-7.cs
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");
workSheet("A1:L1").Style.SetBackgroundColor("#d3d3d3")
Esto establece el color de fondo del rango de celdas en gris. El color está en RGB (Rojo, Verde, Azul) en el que los dos primeros caracteres representan el rojo, los dos siguientes el verde y los dos últimos el azul. Los valores van de 0 a 9, y de A a F (En hexadecimal).
5.2. Crear bordes
Crear bordes con IronXL es muy sencillo, como se muestra a continuación:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-8.cs
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet("A1:L1").Style.TopBorder.SetColor("#000000")
workSheet("A1:L1").Style.BottomBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.Type = IronXL.Styles.BorderType.Medium
workSheet("A11:L11").Style.BottomBorder.SetColor("#000000")
workSheet("A11:L11").Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium
En el código anterior he establecido los bordes negro superior e inferior en las celdas A1 a L1, luego he establecido el borde derecho en las celdas L2 a L11 y el estilo del borde es Medio. Por último, he establecido el borde inferior de las celdas A11 a L11
6. Utilizar fórmulas en celdas
Sigo diciendo que IronXL hace que todo sea tan fácil, pero realmente lo hace, y no puedo destacarlo lo suficiente! El siguiente código permite utilizar fórmulas:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-9.cs
// Use IronXL built-in aggregations
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 value to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;
' Use IronXL built-in aggregations
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 value to cells
workSheet("A12").Value = sum
workSheet("B12").Value = avg
workSheet("C12").Value = max
workSheet("D12").Value = min
Lo bueno de esto es el hecho de que se puede establecer el tipo de datos de la celda por lo tanto el resultado de la fórmula. El código anterior muestra cómo utilizar la función SUM (suma valores)AVG (valores medios)MAX (obtiene el valor más alto) y MIN (obtiene el valor más bajo) fórmulas.
7. Establecer propiedades de hoja de cálculo e impresión
7.1. Establecer propiedades de la hoja de cálculo
Las propiedades de la hoja de cálculo incluyen congelar filas y columnas y proteger la hoja de cálculo con una contraseña. Se muestra a continuación:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-10.cs
workSheet.ProtectSheet("Password");
workSheet.CreateFreezePane(0, 1);
workSheet.ProtectSheet("Password")
workSheet.CreateFreezePane(0, 1)
La primera fila se congela y no se desplaza junto con el resto de la hoja de cálculo. La hoja de cálculo también está protegida de cualquier edición con una contraseña. Las figuras 7 y 8 muestran esto en acción.
7.2. Configurar propiedades de página e impresión
Puede establecer las propiedades de la página, como la orientación de la página, el tamaño de la página y el área de impresión, entre otras.
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-11.cs
workSheet.SetPrintArea("A1:L12");
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape;
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4;
workSheet.SetPrintArea("A1:L12")
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4
El área de impresión se establece en A1 a L12. La orientación se establece en Horizontal y el tamaño de papel en A4.
8. Guardar libro de trabajo
Para guardar el Libro de Trabajo, utilice el siguiente código:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-12.cs
workBook.SaveAs("Budget.xlsx");
workBook.SaveAs("Budget.xlsx")
Acceso rápido a tutoriales
Descargar este tutorial como C# Código fuente
El código fuente completo y gratuito de C# for Excel para este tutorial está disponible para descargar como un archivo de proyecto comprimido de Visual Studio 2017.
DescargarExplore este tutorial en GitHub
El código fuente de este proyecto está disponible en C# y VB.NET en GitHub.
Utilice este código como una manera fácil de ponerse en marcha en solo unos minutos. El proyecto se guarda como un proyecto de Microsoft Visual Studio 2017, pero es compatible con cualquier IDE de .NET.
Cómo crear un archivo Excel en C# en GitHubLea la referencia de la API XL
Explore la Referencia de la API para IronXL, que describe los detalles de todas las características, espacios de nombres, clases, métodos, campos y enums de IronXL.
Ver la referencia de la API