C# Analizar archivo Excel

This article was translated from English: Does it need improvement?
Translated
View the article in English

Cuando utilizamos hojas de cálculo Excel para crear aplicaciones, a menudo analizamos los resultados basándonos en los datos, y necesitamos analizar en C# los datos del archivo Excel en el formato requerido para obtener los resultados correctos. El análisis sintáctico de datos en diferentes formatos es fácil en el entorno C Sharp con el uso de IronXL, y los pasos a continuación.


Cómo analizar un archivo Excel en C#

  1. Instale la biblioteca Excel para procesar archivos Excel.

  2. Añada el fichero Excel abriendo el objeto Workbook.

  3. Elija la Hoja de trabajo por defecto.

  4. Leer valores del Workbook de Excel.

  5. Procesar el valor con precisión y mostrarlo.

    Primer paso

1. Descargar IronXL para Visual Studio

Su primer paso esDescargar IronXL para Visual Studio o instalar utilizandoNuGetambos métodos gratuitos para proyectos de desarrollo.

Install-Package IronXL.Excel

Tutorial

2. Cargar archivo Excel

A continuación, querrá cargar el archivo Excel en su proyecto C# utilizando el comando WorkBook.Load() función de IronXL. Pasamos un parámetro de cadena para especificar la ruta del archivo Excel de la siguiente manera:

//Load Excel file
WorkBook wb = WorkBook.Load("Path");
//Load Excel file
WorkBook wb = WorkBook.Load("Path");
'Load Excel file
Dim wb As WorkBook = WorkBook.Load("Path")
VB   C#

El archivo Excel se cargará en wb. Ahora podemos abrir una Hoja de Trabajo específica.


3. Abra la hoja de trabajo de Excel

Para abrir una Hoja de Trabajo de un fichero Excel, utilizamos el comando WorkBook.GetWorkSheet() función. Requiere un parámetro de cadena para especificar el nombre de la hoja de trabajo que se va a abrir. Podemos usarlo así:

//specify WorkSheet
WorkSheet ws = Wb.GetWorkSheet("SheetName");
//specify WorkSheet
WorkSheet ws = Wb.GetWorkSheet("SheetName");
'specify WorkSheet
Dim ws As WorkSheet = Wb.GetWorkSheet("SheetName")
VB   C#

wb` es el WorkBook que definimos en el Paso 1.


4. Obtener datos de un archivo Excel

Ahora podemos obtener fácilmente cualquier tipo de datos, de muchas maneras, desde la Hoja de Trabajo Excel abierta. En el siguiente ejemplo, vemos cómo acceder a un valor de celda específico y parsearlo a cadena:

//Access the Data by Cell Addressing
string val = ws ["Cell Address"].ToString();
//Access the Data by Cell Addressing
string val = ws ["Cell Address"].ToString();
'Access the Data by Cell Addressing
Dim val As String = ws ("Cell Address").ToString()
VB   C#

En la línea anterior ws es la Hoja de Trabajo, que se definió en el Paso 2. Este es el enfoque simple, pero usted puede leer más y ver diferentes ejemplos sobre cómoacceder a los datos de un archivo Excel.


5. Convertir datos de Excel en valores numéricos

Ahora pasamos a cómo analizar datos de archivos Excel.

En primer lugar, veremos cómo tratar con un tipo numérico de datos de Excel, y analizarlo en nuestro formato requerido. Utiliza la lista IronXL de funciones de analizador sintáctico que aparece a continuación para utilizar la más adecuada para tu proyecto.

Tipo de datosMétodoExplicación
intHojaTrabajo ["DirecciónCelda"].IntValueSe utiliza cuando necesitamos parsear el valor de una celda Excel en `Int`.
Int32HojaTrabajo ["DirecciónCelda"].Int32Valuecuando necesitamos parsear el valor de una celda Excel en `Int32`.
Int64HojaTrabajo ["DirecciónCelda"].Int64Valuesi tenemos un valor numérico demasiado grande y queremos utilizarlo en nuestro proyecto.
floatHojaTrabajo ["DirecciónCelda"].FloatValueSe utiliza cuando los valores también son importantes después del punto decimal.
DobleHojaTrabajo ["DirecciónCelda"].DoubleValuesi queremos obtener datos numéricos con mayor precisión.
DecimalHojaTrabajo ["DirecciónCelda"].ValorDecimalSi tenemos demasiados dígitos después del punto decimal y queremos un resultado con la máxima precisión.

A continuación se muestra un ejemplo de cómo utilizar algunas de estas funciones para analizar datos de archivos Excel en C#.

/**
Parse into Numeric Values
anchor-parse-excel-data-into-numeric-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Parse Excel cell value into string
    string str_val = ws ["B3"].Value.ToString();
    //Parse Excel cell value into int32
    Int32 int32_val = ws ["G3"].Int32Value;
    //Parse Excel cell value into Decimal
    decimal decimal_val = ws ["E5"].DecimalValue;

    Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
    Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
    Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);
    Console.ReadKey();
}
/**
Parse into Numeric Values
anchor-parse-excel-data-into-numeric-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Parse Excel cell value into string
    string str_val = ws ["B3"].Value.ToString();
    //Parse Excel cell value into int32
    Int32 int32_val = ws ["G3"].Int32Value;
    //Parse Excel cell value into Decimal
    decimal decimal_val = ws ["E5"].DecimalValue;

    Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
    Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
    Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);
    Console.ReadKey();
}
'''
'''Parse into Numeric Values
'''anchor-parse-excel-data-into-numeric-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Parse Excel cell value into string
	Dim str_val As String = ws ("B3").Value.ToString()
	'Parse Excel cell value into int32
	Dim int32_val As Int32 = ws ("G3").Int32Value
	'Parse Excel cell value into Decimal
	Dim decimal_val As Decimal = ws ("E5").DecimalValue

	Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val)
	Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val)
	Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val)
	Console.ReadKey()
End Sub
VB   C#

Este código mostrará la siguiente salida:

1output related to 5. Convertir datos de Excel en valores numéricos

Y aquí podemos ver los valores del fichero Excel sample.xlsx:

1excel related to 5. Convertir datos de Excel en valores numéricos

6. Convertir datos de Excel en valores booleanos

Para parsear datos de archivos de Excel a datos de tipo Booleano, IronXL provee la función BoolValue. Puede utilizarse del siguiente modo:

/**
Parse into Boolean Values
anchor-parse-excel-data-into-boolean-values
**/
bool Val = ws ["Cell Address"].BoolValue;
/**
Parse into Boolean Values
anchor-parse-excel-data-into-boolean-values
**/
bool Val = ws ["Cell Address"].BoolValue;
'''
'''Parse into Boolean Values
'''anchor-parse-excel-data-into-boolean-values
'''*
Dim Val As Boolean = ws ("Cell Address").BoolValue
VB   C#

ws es la Hoja de Trabajo tal y como se describe en el ejemplo anterior. La función anterior devolverá el valor como True o False. Nota: Si desea convertir el valor de la celda en un tipo de dato booleano, asegúrese de que los valores de su archivo Excel están en formato (0 , 1) o (True , False).


7. Parse Excel File into C# Colecciones

Mediante el uso de IronXL, podemos analizar los datos del archivo de Excel en el siguiente tipo de colecciones CSharp:

Tipo de datosMétodoExplicación
MatrizHojaDeTrabajo ["De:A"].ToArray()Esta función se utiliza para convertir los datos de un archivo Excel en una matriz. Especificamos un rango de celdas del archivo Excel cuyos datos se convertirán en matriz.
Tabla de datosHojaDeTrabajo.ToDataTable()Se utiliza para analizar una hoja de cálculo completa de Excel en DataTable y utiliza los datos que necesitamos.
DataSetWorkBook.ToDataSet()podemos parsear un WorkBook de Excel completo en un DataSet, de esta forma, las WorkSheets del fichero Excel se convierten en DataTable del DataSet.

Veamos uno a uno cada ejemplo de cómo analizar datos de archivos Excel en estos tipos de colecciones.

7.1. Analizar datos de Excel en una matriz

IronXL proporciona una forma sencilla de analizar los datos de un archivo de Excel de un rango especificado en una matriz. Para ello, especificamos las direcciones de las celdas "De" a "A", cuyos datos se convertirán en una matriz. Puede hacerse de la siguiente manera:

var array = WorkSheet ["From:To"].ToArray();
var array = WorkSheet ["From:To"].ToArray();
Dim array = WorkSheet ("From:To").ToArray()
VB   C#

Si queremos acceder a un elemento específico de la matriz, utilizamos:

string item = array [ItemIndex].Value.ToString();
string item = array [ItemIndex].Value.ToString();
Dim item As String = array (ItemIndex).Value.ToString()
VB   C#

Está claro que podemos acceder fácilmente a los elementos mediante indexación. Veamos un ejemplo de cómo analizar los datos de un archivo Excel en un array y seleccionar un elemento específico del mismo.

/**
Parse into Array
anchor-parse-excel-data-into-array
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    var array = ws ["B6:F6"].ToArray();
    int item = array.Count();
    string total_items = array [0].Value.ToString();
    Console.WriteLine("First item in the array: {0}", item);
    Console.WriteLine("Total items from B6 to F6: {0}",total_items);
    Console.ReadKey();
}
/**
Parse into Array
anchor-parse-excel-data-into-array
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    var array = ws ["B6:F6"].ToArray();
    int item = array.Count();
    string total_items = array [0].Value.ToString();
    Console.WriteLine("First item in the array: {0}", item);
    Console.WriteLine("Total items from B6 to F6: {0}",total_items);
    Console.ReadKey();
}
'''
'''Parse into Array
'''anchor-parse-excel-data-into-array
'''*
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 array = ws ("B6:F6").ToArray()
	Dim item As Integer = array.Count()
	Dim total_items As String = array (0).Value.ToString()
	Console.WriteLine("First item in the array: {0}", item)
	Console.WriteLine("Total items from B6 to F6: {0}",total_items)
	Console.ReadKey()
End Sub
VB   C#

El código anterior muestra la siguiente salida:

2output related to 7.1. Analizar datos de Excel en una matriz

Los valores del rango del archivo Excel, sample.xlsx, de B6 a F6, tienen este aspecto:

2excel related to 7.1. Analizar datos de Excel en una matriz

7.2. Convertir Excel WorkSheet en Datatable

La belleza de IronXL es que podemos convertir fácilmente una Hoja de Trabajo de Excel específica en una Tabla de Datos. Para ello, podemos utilizar la función .ToDataTable() función de IronXL de la siguiente manera:

DataTable dt = WorkSheet.ToDataTable();
DataTable dt = WorkSheet.ToDataTable();
Dim dt As DataTable = WorkSheet.ToDataTable()
VB   C#

Analizará la hoja de trabajo de Excel en la tabla de datos dt. En este caso, si queremos utilizar la primera fila del archivo de Excel como el ColumnName de DataTable, entonces podemos establecerlo como tal:

DataTable dt=WorkSheet.ToDataTable(True);
DataTable dt=WorkSheet.ToDataTable(True);
Dim dt As DataTable=WorkSheet.ToDataTable([True])
VB   C#

El parámetro booleano de .ToDataTable()La función especificará que la primera fila del archivo Excel se convierta en ColumnName de DataTable. Puede profundizar en el trabajo conExcelWorksheet como DataTable en C#

Y aquí está el ejemplo de cómo analizar Excel WorkSheet en DataTable:

/**
Parse into DataTable
anchor-parse-excel-worksheet-into-datatable
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //parse sheet1 of sample.xlsx file into DataTable.
    //we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
    DataTable dt = ws.ToDataTable(true); 
}
/**
Parse into DataTable
anchor-parse-excel-worksheet-into-datatable
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //parse sheet1 of sample.xlsx file into DataTable.
    //we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
    DataTable dt = ws.ToDataTable(true); 
}
'''
'''Parse into DataTable
'''anchor-parse-excel-worksheet-into-datatable
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'parse sheet1 of sample.xlsx file into DataTable.
	'we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
	Dim dt As DataTable = ws.ToDataTable(True)
End Sub
VB   C#

7.3. Convertir fichero Excel en DataSet

Si queremos convertir un fichero Excel completo en un DataSet, podemos utilizar la función .ToDataSet() función de IronXL. Puede utilizarse del siguiente modo:

DataSet ds = WorkBook.ToDataSet();
DataSet ds = WorkBook.ToDataSet();
Dim ds As DataSet = WorkBook.ToDataSet()
VB   C#

Nota: Si estamos parseando un archivo Excel en un DataSet, entonces TODAS las Hojas de Trabajo del archivo Excel se convierten en Tablas de Datos de este Dataset. Veamos un ejemplo de cómo convertir un archivo Excel en un DataSet:

/**
Parse File into DataSet
anchor-parse-excel-file-into-dataset
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //parse WorkBook wb into DataSet
    DataSet ds = wb.ToDataSet(); 
    //we also can get DataTable from ds which is actually WorkSheet as:
    DataTable dt=ds.Tables [0];
}
/**
Parse File into DataSet
anchor-parse-excel-file-into-dataset
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //parse WorkBook wb into DataSet
    DataSet ds = wb.ToDataSet(); 
    //we also can get DataTable from ds which is actually WorkSheet as:
    DataTable dt=ds.Tables [0];
}
'''
'''Parse File into DataSet
'''anchor-parse-excel-file-into-dataset
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'parse WorkBook wb into DataSet
	Dim ds As DataSet = wb.ToDataSet()
	'we also can get DataTable from ds which is actually WorkSheet as:
	Dim dt As DataTable=ds.Tables (0)
End Sub
VB   C#

Más informaciónConjunto de datos SQL de Excel y trabajar con estos archivos.


Acceso rápido a tutoriales

Documentation related to Acceso rápido a tutoriales

Documentación para Excel en C#

Utilice la documentación de IronXL para trabajar con Excel en C# para aprovechar toda la funcionalidad, las clases, los espacios de nombres y mucho más en sus proyectos.

Documentación para Excel en C#