Cómo importar archivos Excel en C#
Como desarrolladores, a menudo necesitamos importar datos de archivos Excel y utilizarlos para cumplir nuestros requisitos de gestión de datos y aplicaciones. Sin necesidad de muchas líneas de código, IronXL nos ofrece una forma sencilla de importar exactamente los datos que necesitamos directamente en un proyecto C# y, a continuación, manipularlos mediante programación.
Cómo importar archivos Excel en C#
- Descargue e instale la biblioteca C# para importar archivos Excel
- Preparar los archivos Excel que se van a importar
- Utiliza el
Carga
método para importar hojas de cálculo - Edite el archivo Excel cargado mediante API intuitivas
- Exporte el archivo Excel editado en varios tipos
Primer paso
1. Importar datos con la biblioteca IronXL
Importe datos utilizando las funciones provistas por la librería IronXL Excel, que utilizaremos en este tutorial. El software está disponible gratuitamente para su desarrollo.
Instale en su Proyecto C# mediante DLL Descargar o navegar utilizando el paquete NuGet.
Install-Package IronXL.Excel
Tutorial
2. Hoja de trabajo Access para el proyecto
Para las necesidades de nuestro proyecto de hoy, vamos a importar datos de Excel en nuestra aplicación C#, utilizando el software IronXL instalado en el paso 1.
Para el paso 2, cargaremos nuestro Excel WorkBook en nuestro proyecto CSharp utilizando el comando WorkBook.Load()
función de IronXL. Pasamos la ruta del Libro de Excel como un parámetro de cadena en esta función, así:
//cargar archivo Excel
WorkBook wb = WorkBook.Load("Path");
//cargar archivo Excel
WorkBook wb = WorkBook.Load("Path");
'cargar archivo Excel
Dim wb As WorkBook = WorkBook.Load("Path")
El archivo Excel de la ruta especificada se cargará en wb
.
A continuación, necesitamos acceder a una WorkSheet específica del archivo Excel cuyos datos se importarán al proyecto. Para ello, podemos utilizar la función GetWorkSheet()
función de IronXL. Pasaremos el nombre de la hoja como un parámetro de cadena en esta función para especificar qué hoja del Libro de Trabajo debe importarse.
//especificar el nombre de la hoja de Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
//especificar el nombre de la hoja de Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
'especificar el nombre de la hoja de Excel WorkBook
Dim ws As WorkSheet = wb.GetWorkSheet("SheetName")
El WorkSheet se importará como ws
, y wb
es el WorkBook que hemos definido en el ejemplo de código anterior.
También existen las siguientes formas alternativas de importar una hoja de trabajo de Excel al proyecto.
/**
Import WorkSheet
anchor-access-worksheet-for-project
**/
//por indexación de hojas
WorkBook.WorkSheets [SheetIndex];
//Obtener la hoja de trabajo por defecto
WorkBook.DefaultWorkSheet;
//obtener la primera hoja de trabajo
WorkBook.WorkSheets.First();
//para la primera hoja o la hoja por defecto:
WorkBook.WorkSheets.FirstOrDefault();
/**
Import WorkSheet
anchor-access-worksheet-for-project
**/
//por indexación de hojas
WorkBook.WorkSheets [SheetIndex];
//Obtener la hoja de trabajo por defecto
WorkBook.DefaultWorkSheet;
//obtener la primera hoja de trabajo
WorkBook.WorkSheets.First();
//para la primera hoja o la hoja por defecto:
WorkBook.WorkSheets.FirstOrDefault();
'''
'''Import WorkSheet
'''anchor-access-worksheet-for-project
'''*
'por indexación de hojas
WorkBook.WorkSheets (SheetIndex)
'Obtener la hoja de trabajo por defecto
WorkBook.DefaultWorkSheet
'obtener la primera hoja de trabajo
WorkBook.WorkSheets.First()
'para la primera hoja o la hoja por defecto:
WorkBook.WorkSheets.FirstOrDefault()
Ahora, podemos importar fácilmente cualquier tipo de datos de los archivos Excel especificados. Veamos todos los aspectos posibles que utilizamos para importar datos de archivos Excel en nuestro proyecto.
3. Importar datos de Excel en C#
Este es el aspecto básico de la importación de datos de archivos Excel en nuestro proyecto.
Para ello, podemos utilizar un sistema de direccionamiento de celdas para especificar qué datos de celdas necesitamos importar. Devolverá el valor de una dirección de celda específica del archivo Excel.
WorkSheet ["Cell Address"];
WorkSheet ["Cell Address"];
WorkSheet ("Cell Address")
También podemos importar datos de celdas de archivos Excel utilizando el índice de filas y columnas. Esta línea de código devolverá el valor del índice de fila y columna especificados.
WorkSheet.Rows [RowIndex].Columns [ColumnIndex]
WorkSheet.Rows [RowIndex].Columns [ColumnIndex]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet.Rows [RowIndex].Columns [ColumnIndex]
Si queremos asignar valores de celdas importadas a variables, podemos utilizar este código.
/**
Import Data by Cell Address
anchor-import-excel-data-in-c-num
**/
//por direccionamiento celular
string val = WorkSheet ["Cell Address"].ToString();
//por indexación de filas y columnas
string val = WorkSheet.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
/**
Import Data by Cell Address
anchor-import-excel-data-in-c-num
**/
//por direccionamiento celular
string val = WorkSheet ["Cell Address"].ToString();
//por indexación de filas y columnas
string val = WorkSheet.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
'''
'''Import Data by Cell Address
'''anchor-import-excel-data-in-c-num
'''*
'por direccionamiento celular
Dim val As String = WorkSheet ("Cell Address").ToString()
'por indexación de filas y columnas
Dim val As String = WorkSheet.Rows (RowIndex).Columns (ColumnIndex).Value.ToString()
En los ejemplos anteriores, el índice de filas y columnas empieza en 0.
4. Importar datos Excel de un rango específico
Si queremos importar datos en un rango específico desde un Libro de Excel, se puede hacer fácilmente utilizando la función range
. Para definir el rango, necesitamos describir la dirección de la celda inicial y de la celda final. De este modo, devolverá todos los valores de celda que se encuentren en el rango especificado.
WorkSheet ["starting Cell Address : Ending Cell Address"];
WorkSheet ["starting Cell Address : Ending Cell Address"];
WorkSheet ("starting Cell Address : Ending Cell Address")
Más información sobre el trabajo con rango en archivos Excel consulte los ejemplos de código proporcionados.
/**
Import Data by Range
anchor-import-excel-data-of-specific-range
**/
using IronXL;
static void Main(string [] args)
{
//importar Excel WorkBook
WorkBook wb = WorkBook.Load("sample.xlsx");
//especificar hoja de trabajo
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//importar datos de una celda específica
string val = ws ["A4"].Value.ToString();
Console.WriteLine("Import Value of A4 Cell address: {0}",val);
Console.WriteLine("import Values in Range From B3 To B9 :\n");
//importar datos en un rango específico
foreach (var item in ws ["B3:B9"])
{
Console.WriteLine(item.Value.ToString());
}
Console.ReadKey();
}
/**
Import Data by Range
anchor-import-excel-data-of-specific-range
**/
using IronXL;
static void Main(string [] args)
{
//importar Excel WorkBook
WorkBook wb = WorkBook.Load("sample.xlsx");
//especificar hoja de trabajo
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//importar datos de una celda específica
string val = ws ["A4"].Value.ToString();
Console.WriteLine("Import Value of A4 Cell address: {0}",val);
Console.WriteLine("import Values in Range From B3 To B9 :\n");
//importar datos en un rango específico
foreach (var item in ws ["B3:B9"])
{
Console.WriteLine(item.Value.ToString());
}
Console.ReadKey();
}
'''
'''Import Data by Range
'''anchor-import-excel-data-of-specific-range
'''*
Imports Microsoft.VisualBasic
Imports IronXL
Shared Sub Main(ByVal args() As String)
'importar Excel WorkBook
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'especificar hoja de trabajo
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'importar datos de una celda específica
Dim val As String = ws ("A4").Value.ToString()
Console.WriteLine("Import Value of A4 Cell address: {0}",val)
Console.WriteLine("import Values in Range From B3 To B9 :" & vbLf)
'importar datos en un rango específico
For Each item In ws ("B3:B9")
Console.WriteLine(item.Value.ToString())
Next item
Console.ReadKey()
End Sub
El código anterior muestra la siguiente salida:
Con los valores del fichero Excel sample.xlsx
como:
5. Importar datos de Excel mediante funciones agregadas
También podemos aplicar funciones de agregación a ficheros Excel e importar los datos resultantes de estas funciones de agregación. Aquí tienes algunos ejemplos de las distintas funciones y cómo utilizarlas.
- Suma()`
//para hallar la suma de un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Sum();
//para hallar la suma de un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Sum();
'para hallar la suma de un rango de celdas específico
WorkSheet ("Starting Cell Address : Ending Cell Address").Sum()
Promedio()
//para hallar la media de un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Avg()
//para hallar la media de un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Avg()
'para hallar la media de un rango de celdas específico
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["Starting Cell Address : Ending Cell Address"].Avg()
Min()
//para encontrar el Mín En un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Min()
//para encontrar el Mín En un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Min()
'para encontrar el Mín En un rango de celdas específico
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["Starting Cell Address : Ending Cell Address"].Min()
Max()
//para encontrar el Máx en un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Max()
//para encontrar el Máx en un rango de celdas específico
WorkSheet ["Starting Cell Address : Ending Cell Address"].Max()
'para encontrar el Máx en un rango de celdas específico
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["Starting Cell Address : Ending Cell Address"].Max()
Más información sobre el trabajo con funciones agregadas en Excel para C# y aprenda más sobre cómo extraer datos con distintos métodos.
Veamos un ejemplo de cómo importar datos de archivos Excel aplicando estas funciones.
/**
Import Data by Aggregate Function
anchor-import-excel-data-by-aggregate-functions
**/
using IronXL;
static void Main(string [] args)
{
//Importar archivo Excel
WorkBook wb = WorkBook.Load("sample.xlsx");
//Especificar hoja de trabajo
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Importar datos de archivos Excel aplicando funciones de agregación
decimal Sum = ws ["D2:D9"].Sum();
decimal Avg = ws ["D2:D9"].Avg();
decimal Min = ws ["D2:D9"].Min();
decimal Max = ws ["D2:D9"].Max();
Console.WriteLine("Sum From D2 To D9: {0}", Sum);
Console.WriteLine("Avg From D2 To D9: {0}", Avg);
Console.WriteLine("Min From D2 To D9: {0}", Min);
Console.WriteLine("Max From D2 To D9: {0}", Max);
Console.ReadKey();
}
/**
Import Data by Aggregate Function
anchor-import-excel-data-by-aggregate-functions
**/
using IronXL;
static void Main(string [] args)
{
//Importar archivo Excel
WorkBook wb = WorkBook.Load("sample.xlsx");
//Especificar hoja de trabajo
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Importar datos de archivos Excel aplicando funciones de agregación
decimal Sum = ws ["D2:D9"].Sum();
decimal Avg = ws ["D2:D9"].Avg();
decimal Min = ws ["D2:D9"].Min();
decimal Max = ws ["D2:D9"].Max();
Console.WriteLine("Sum From D2 To D9: {0}", Sum);
Console.WriteLine("Avg From D2 To D9: {0}", Avg);
Console.WriteLine("Min From D2 To D9: {0}", Min);
Console.WriteLine("Max From D2 To D9: {0}", Max);
Console.ReadKey();
}
'''
'''Import Data by Aggregate Function
'''anchor-import-excel-data-by-aggregate-functions
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
'Importar archivo Excel
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Especificar hoja de trabajo
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Importar datos de archivos Excel aplicando funciones de agregación
Dim Sum As Decimal = ws ("D2:D9").Sum()
Dim Avg As Decimal = ws ("D2:D9").Avg()
Dim Min As Decimal = ws ("D2:D9").Min()
Dim Max As Decimal = ws ("D2:D9").Max()
Console.WriteLine("Sum From D2 To D9: {0}", Sum)
Console.WriteLine("Avg From D2 To D9: {0}", Avg)
Console.WriteLine("Min From D2 To D9: {0}", Min)
Console.WriteLine("Max From D2 To D9: {0}", Max)
Console.ReadKey()
End Sub
El código anterior nos da este resultado:
Y nuestro fichero sample.xlsx
tendrá estos valores:
6. Importar datos completos de archivos Excel
Si queremos importar datos completos de un archivo Excel en nuestro proyecto CSharp, entonces podemos primero parsear nuestro WorkBook cargado en un DataSet. De este modo, los datos completos de Excel se importarían en el DataSet, y las WorkSheets de los archivos Excel se convertirían en DataTables de ese DataSet. Aquí está en acción:
//importar WorkBook al conjunto de datos
DataSet ds = WorkBook.ToDataSet();
//importar WorkBook al conjunto de datos
DataSet ds = WorkBook.ToDataSet();
'importar WorkBook al conjunto de datos
Dim ds As DataSet = WorkBook.ToDataSet()
De este modo, nuestra WorkSheet especificada se importará en un DataSet que podremos utilizar según nuestras necesidades.
A menudo, la primera columna de un archivo Excel se utiliza como ColumnName. En este caso, tenemos que hacer la primera columna como DataTable ColumnName. Para ello, establecemos el parámetro booleano de ToDataSet()
función de IronXL de la siguiente manera:
ToDataSet(true);
ToDataSet(true);
ToDataSet(True)
Esto hará que la primera columna del archivo de Excel como un ColumnName DataTable.
Veamos un ejemplo completo de cómo importar datos de Excel a un Dataset, y utilizar la primera columna de un Excel WorkSheets como ColumnName de DataTable:
/**
Import to Dataset
anchor-import-complete-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
DataSet ds = new DataSet();
ds = wb.ToDataSet(true);
Console.WriteLine("Excel file data imported to dataset successfully.");
Console.ReadKey();
}
/**
Import to Dataset
anchor-import-complete-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
DataSet ds = new DataSet();
ds = wb.ToDataSet(true);
Console.WriteLine("Excel file data imported to dataset successfully.");
Console.ReadKey();
}
'''
'''Import to Dataset
'''anchor-import-complete-excel-file-data
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
Dim ds As New DataSet()
ds = wb.ToDataSet(True)
Console.WriteLine("Excel file data imported to dataset successfully.")
Console.ReadKey()
End Sub
Trabajar con Conjunto de datos y tabla de datos de Excel pueden ser complicadas, pero disponemos de más ejemplos para incorporar datos de archivos a su proyecto C#.
Acceso rápido a la biblioteca
Explorar la referencia IronXL
Obtenga más información sobre cómo extraer datos de Excel a través de celdas, rangos, conjuntos de datos y tablas de datos en nuestra documentación completa Referencia de la API para IronXl.
Explorar la referencia IronXL