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#
- Descargar 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 Creates C# Excel Files in .NET
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 extremadamente rápido. 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:
- Human support directly from our .NET development team
- Rapid installation with Microsoft Visual Studio
- FREE for development. Licenses from $749.
Crear y guardar un archivo Excel: Código rápido
https://www.nuget.org/packages/IronXL.Excel/ Como alternativa, se puede descargar IronXL.dll y añadir 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
Comience a usar IronXL en su proyecto hoy con una prueba gratuita.
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 estás configurado, ¡podemos comenzar a experimentar con las increíbles funciones de la biblioteca IronXL!
Tutoriales
2. Crear un proyecto de 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 sencillo crear un nuevo libro de Excel usando IronXL! ¡Es 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 formatos de archivo, XLS (versión más antigua de archivo de Excel) y XLSX (versión actual y más reciente de archivo), se pueden crear con IronXL.
3.1. Establecer una Hoja de Trabajo Predeterminada ###
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 Células
4.1. Establecer Valores de Celdas 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 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 formato RGB (Rojo, Verde, Azul) donde 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, luego de A a F (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. Usar fórmulas en las celdas ##
Sigo diciendo que IronXL hace que todo sea tan fácil, ¡y 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 usar las fórmulas SUM (suma valores), AVG (promedia valores), MAX (obtiene el valor más alto) y MIN (obtiene el valor más bajo).
7. Establecer propiedades de la hoja de trabajo y de impresión
7.1. Establecer las Propiedades de la Hoja ###
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. Establecer 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
Download this Tutorial as C# Source Code
The full free C# for Excel Source Code for this tutorial is available to download as a zipped Visual Studio 2017 project file.
DownloadExplore this Tutorial on GitHub
The source code for this project is available in C# and VB.NET on GitHub.
Use this code as an easy way to get up and running in just a few minutes. The project is saved as a Microsoft Visual Studio 2017 project, but is compatible with any .NET IDE.
How to Create Excel File in C# on 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