Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
¿Buscas una librería Excel para leer datos Excel en una DataTable
en C#?
La lectura de archivos Excel en una DataTable
en C# tiene varias aplicaciones prácticas en diversos sectores y dominios, como el análisis de datos y la elaboración de informes, la importación de datos en bases de datos, la migración de datos, la validación y limpieza de datos, la integración con otros sistemas, la automatización y el procesamiento por lotes.
En este artículo, discutiremos y compararemos dos librerías Excel diferentes para .NET Core en C# que proporcionan esta característica para leer datos Excel y archivos Excel en una DataTable
. Las bibliotecas son
EPPlus
EPPlus es una potente biblioteca de código abierto para crear y manipular archivos Excel en C#. Proporciona una API sencilla e intuitiva que permite a los desarrolladores generar, leer y modificar hojas de cálculo Excel mediante programación, sin necesidad de instalar Microsoft Office o Excel en el servidor o en los equipos cliente. Con EPPlus, puede crear fácilmente hojas de cálculo, añadir datos, aplicar formato, crear gráficos y realizar otras operaciones en archivos Excel. Es compatible tanto con el antiguo formato .xls como con el más reciente .xlsx y ofrece un rendimiento y una gestión de la memoria eficientes. Si necesita generar informes dinámicos, importar/exportar datos o automatizar tareas relacionadas con Excel, EPPlus le ofrece un completo conjunto de funciones y capacidades para simplificar el manejo de archivos Excel en aplicaciones C#.
IronXL es una biblioteca potente y versátil que ofrece a los desarrolladores la posibilidad de leer, escribir y manipular archivos Excel sin esfuerzo dentro de sus aplicaciones .NET. Gracias a su intuitiva y completa API, IronXL simplifica el complejo proceso de trabajar con hojas de cálculo, permitiendo a los desarrolladores extraer datos, realizar cálculos, crear gráficos y generar informes con facilidad. Ya se trate de automatizar tareas de importación y exportación de datos, realizar análisis de datos o crear plantillas dinámicas de Excel, IronXL proporciona una solución robusta que ahorra a los desarrolladores tiempo y esfuerzo valiosos, al tiempo que garantiza la precisión y fiabilidad en el manejo de datos de Excel. Gracias a su perfecta integración, su extensa documentación y su amplia gama de funciones, IronXL se convierte en la opción preferida de los desarrolladores que buscan una herramienta fiable y eficaz para superar los retos asociados a la manipulación de archivos Excel en el .NET Framework.
Para instalar la biblioteca EPPlus en su proyecto C#, primero debe crear un nuevo proyecto basado en consola en Visual Studio. Después, puede instalarlo fácilmente utilizando el gestor de paquetes NuGet.
Una vez creado el nuevo proyecto, ve a Herramientas y pasa el ratón por encima del Gestor de paquetes NuGet, luego selecciona "Gestionar paquetes NuGet para la solución".
Aparecerá una nueva ventana. En esta nueva ventana, vaya a la opción "Examinar" y busque "EPPlus". Aparecerá una lista de paquetes y deberás seleccionar la última versión estable. A continuación, haga clic en el botón "Instalar" de la derecha para instalar la biblioteca EPPlus.
Así de fácil, EPPlus se añadirá a su proyecto.
Hay muchos métodos para instalar IronXL, pero en esta sección, sólo discutiremos la instalación de IronXL utilizando el Administrador de paquetes NuGet.
Al igual que en la sección 3, cree un nuevo proyecto y vaya a "Herramientas" y abra el Gestor de paquetes NuGet para soluciones.
En la nueva ventana, introduzca la palabra clave "IronXL" en la barra de búsqueda. Aparecerá una lista y podrá seleccionar el paquete IronXL que desee instalar. A continuación, haga clic en el botón "Instalar" para instalar IronXL en su proyecto.
Ahora IronXL está listo para su uso.
En esta sección, examinaremos el código para leer Excel como una DataTable
utilizando la librería Excel del paquete C# EPPlus.
Necesitamos un fichero Excel de ejemplo para leerlo como DataTable
. Para ello, generaremos un archivo Excel de ejemplo.
A continuación se muestra el código para leer el archivo de Excel como un DataTable
.
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string [] args)
{
var path = @"sample.xlsx";
var data = ExcelDataToDataTable(path, "Table");
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow);
}
Console.WriteLine();
}
}
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " Does Not Exists");
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var xlPackage = new ExcelPackage(fi);
// get the first worksheet in the workbook
var worksheet = xlPackage.Workbook.Worksheets [sheetName];
dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = true;
});
return dt;
}
}
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;
class Program
{
static void Main(string [] args)
{
var path = @"sample.xlsx";
var data = ExcelDataToDataTable(path, "Table");
foreach (DataRow row in data.Rows)
{
foreach (var wsrow in row.ItemArray)
{
Console.Write(wsrow);
}
Console.WriteLine();
}
}
public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
{
DataTable dt = new DataTable();
var fi = new FileInfo(filePath);
// Check if the file exists
if (!fi.Exists)
throw new Exception("File " + filePath + " Does Not Exists");
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var xlPackage = new ExcelPackage(fi);
// get the first worksheet in the workbook
var worksheet = xlPackage.Workbook.Worksheets [sheetName];
dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
{
c.FirstRowIsColumnNames = true;
});
return dt;
}
}
Imports OfficeOpenXml
Imports System
Imports System.Data
Imports System.IO
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim path = "sample.xlsx"
Dim data = ExcelDataToDataTable(path, "Table")
For Each row As DataRow In data.Rows
For Each wsrow In row.ItemArray
Console.Write(wsrow)
Next wsrow
Console.WriteLine()
Next row
End Sub
Public Shared Function ExcelDataToDataTable(ByVal filePath As String, ByVal sheetName As String, Optional ByVal hasHeader As Boolean = True) As DataTable
Dim dt As New DataTable()
Dim fi = New FileInfo(filePath)
' Check if the file exists
If Not fi.Exists Then
Throw New Exception("File " & filePath & " Does Not Exists")
End If
ExcelPackage.LicenseContext = LicenseContext.NonCommercial
Dim xlPackage = New ExcelPackage(fi)
' get the first worksheet in the workbook
Dim worksheet = xlPackage.Workbook.Worksheets (sheetName)
dt = worksheet.Cells (1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
c.FirstRowIsColumnNames = True
End Sub)
Return dt
End Function
End Class
El código anterior llama a un método que toma parámetros de entrada como la ruta del archivo y el nombre de la hoja, y devuelve una DataTable
como salida.
Convertir una hoja de Excel y leerla como una DataTable es bastante fácil usando IronXL, con sólo unas pocas líneas de código. Además, utilizaremos el archivo Excel anterior como entrada.
El siguiente ejemplo de código realiza la misma funcionalidad que el código anterior, pero utilizando IronXL.
using IronXL;
using System;
using System.Data;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
DataTable Table = workSheet.ToDataTable(true);
foreach (DataRow row in Table.Rows)
{
for (int row = 0; row < dataTable.Columns.Count; row ++)
{
Console.Write(row [row ] + " ");
}
Console.WriteLine();
}
using IronXL;
using System;
using System.Data;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;
DataTable Table = workSheet.ToDataTable(true);
foreach (DataRow row in Table.Rows)
{
for (int row = 0; row < dataTable.Columns.Count; row ++)
{
Console.Write(row [row ] + " ");
}
Console.WriteLine();
}
Imports IronXL
Imports System
Imports System.Data
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet
Private Table As DataTable = workSheet.ToDataTable(True)
For Each row As DataRow In Table.Rows
For row As Integer = 0 To dataTable.Columns.Count - 1
Console.Write(row (row) & " ")
Next row
Console.WriteLine()
Next row
En el ejemplo de código anterior, simplemente estamos cargando el archivo Excel y convirtiéndolo en una DataTable
utilizando el comando workSheet.ToDataTable(verdadero)
método.
En conclusión, cuando se trata de leer archivos Excel y convertirlos a DataTable en C#, tanto EPPlus como IronXL son excelentes librerías que ofrecen potentes características y simplifican el proceso.
EPPlus es una biblioteca de código abierto que proporciona una API sencilla para generar, leer y modificar hojas de cálculo de Excel mediante programación. Es compatible con los formatos .xls y .xlsx y ofrece un rendimiento y una gestión de la memoria eficientes.
Por otro lado,IronXL es una biblioteca versátil que permite a los desarrolladores trabajar sin esfuerzo con archivos Excel en aplicaciones .NET. Ofrece una API intuitiva y funciones completas para extraer datos, realizar cálculos, crear gráficos y generar informes. IronXL simplifica las tareas complejas de manipulación de archivos de Excel, como la importación y exportación de datos, el análisis de datos y la creación de plantillas dinámicas.
Al comparar los ejemplos de código de IronXL y EPPlus, observamos que el código de EPPlus es bastante largo, complejo y difícil de leer. Por otra parte, el código IronXL es bastante sencillo y fácil de leer. IronXL utiliza la hoja de trabajo por defecto, pero en EPPlus, usted necesita dar el nombre de la hoja de trabajo, de lo contrario, obtendrá un error.
En resumen, yo recomendaría IronXL sobre EPPlus para la manipulación de archivos de Excel y la lectura de archivos de Excel como DataTable
s. Además, IronXL ofrece muchas más funciones que EPPlus en el manejo de archivos Excel con código simple. Para obtener más tutoriales sobre IronXL, visite lo siguienteenlace.
9 productos API .NET para sus documentos de oficina