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#
Instale la biblioteca Excel para procesar archivos Excel.
Añada el fichero Excel abriendo el objeto
Workbook
.Elija la
Hoja de trabajo
por defecto.Leer valores del
Workbook
de Excel.- 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")
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")
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()
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 datos | Método | Explicación |
---|---|---|
int | HojaTrabajo ["DirecciónCelda"].IntValue | Se utiliza cuando necesitamos parsear el valor de una celda Excel en `Int`. |
Int32 | HojaTrabajo ["DirecciónCelda"].Int32Value | cuando necesitamos parsear el valor de una celda Excel en `Int32`. |
Int64 | HojaTrabajo ["DirecciónCelda"].Int64Value | si tenemos un valor numérico demasiado grande y queremos utilizarlo en nuestro proyecto. |
float | HojaTrabajo ["DirecciónCelda"].FloatValue | Se utiliza cuando los valores también son importantes después del punto decimal. |
Doble | HojaTrabajo ["DirecciónCelda"].DoubleValue | si queremos obtener datos numéricos con mayor precisión. |
Decimal | HojaTrabajo ["DirecciónCelda"].ValorDecimal | Si 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
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
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 datos | Método | Explicación |
---|---|---|
Matriz | HojaDeTrabajo ["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 datos | HojaDeTrabajo.ToDataTable() | Se utiliza para analizar una hoja de cálculo completa de Excel en DataTable y utiliza los datos que necesitamos. |
DataSet | WorkBook.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()
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()
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
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()
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])
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
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()
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
Más informaciónConjunto 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#