C# Analizar archivo Excel

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 es Descargar IronXL para Visual Studio o instalar utilizando NuGetambos 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:

//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")
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í:

//especificar hoja de trabajo
WorkSheet ws = Wb.GetWorkSheet("SheetName");
//especificar hoja de trabajo
WorkSheet ws = Wb.GetWorkSheet("SheetName");
'especificar hoja de trabajo
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:

//Acceso a los datos por direccionamiento celular
string val = ws ["Cell Address"].ToString();
//Acceso a los datos por direccionamiento celular
string val = ws ["Cell Address"].ToString();
'Acceso a los datos por direccionamiento celular
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ómo acceder 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.
DobleWorkSheet ["CellAddress"].DobleValuesi 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");
    //Convertir el valor de una celda de Excel en una cadena
    string str_val = ws ["B3"].Value.ToString();
    //Convertir el valor de una celda Excel en 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");
    //Convertir el valor de una celda de Excel en una cadena
    string str_val = ws ["B3"].Value.ToString();
    //Convertir el valor de una celda Excel en 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")
	'Convertir el valor de una celda de Excel en una cadena
	Dim str_val As String = ws ("B3").Value.ToString()
	'Convertir el valor de una celda Excel en 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:

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


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
MatrizWorkSheet ["From:To"].ToMatriz()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 datosWorkSheet.ToTabla de datos()It is used to parse a complete Excel worksheet into Tabla de datos and uses the data as we need.
DataSetWorkBook.ToDataSet()we can parse a complete Excel WorkBook into a DataSet, in this way, the WorkSheets of Excel file becomes Tabla de datos of 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:

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

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 con ExcelWorksheet 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");
    //parsear la hoja1 del archivo sample.xlsx en DataTable.
    //establecemos el parámetro true de la función ToDataTable(),así la primera fila del archivo Excel se convierte en el nombre de la columna de 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");
    //parsear la hoja1 del archivo sample.xlsx en DataTable.
    //establecemos el parámetro true de la función ToDataTable(),así la primera fila del archivo Excel se convierte en el nombre de la columna de 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")
	'parsear la hoja1 del archivo sample.xlsx en DataTable.
	'establecemos el parámetro true de la función ToDataTable(),así la primera fila del archivo Excel se convierte en el nombre de la columna de 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(); 
    //también podemos obtener DataTable de ds que es en realidad WorkSheet como:
    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(); 
    //también podemos obtener DataTable de ds que es en realidad WorkSheet como:
    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()
	'también podemos obtener DataTable de ds que es en realidad WorkSheet como:
	Dim dt As DataTable=ds.Tables (0)
End Sub
VB   C#

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


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#