Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

EPPlus lee Excel en DataTable C# (Tutorial de IronXL)

¿Buscas una biblioteca de Excel para leer datos de Excel en un DataTable en C#?

Leer archivos de Excel en un DataTable en C# tiene varias aplicaciones prácticas en diversas industrias y áreas, como el análisis de datos y la elaboración de informes, la importación de datos a 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 bibliotecas de Excel diferentes para .NET Core en C# que proporcionan esta función para leer datos de Excel y archivos de Excel en un DataTable. Las bibliotecas son

  1. EPPlus
  2. IronXL

1. Biblioteca EPPlus

EPPlus es una poderosa biblioteca de código abierto para crear y manipular archivos de Excel en C#. Proporciona una API simple e intuitiva que permite a los desarrolladores generar, leer y modificar hojas de cálculo Excel de forma programática, sin requerir la instalación de Microsoft Office o Excel en los servidores o las máquinas de los clientes. Con EPPlus, puedes crear fácilmente hojas de trabajo, agregar datos, aplicar formato, crear gráficos y realizar otras operaciones en archivos de Excel. Soporta tanto el formato .xls antiguo como el formato .xlsx más reciente y ofrece un rendimiento eficiente y gestión de memoria. Ya sea que necesites generar informes dinámicos, importar/exportar datos o automatizar tareas relacionadas con Excel, EPPlus ofrece un conjunto completo de características y capacidades para simplificar el manejo de archivos Excel en aplicaciones C#.

2. IronXL

IronXL es una biblioteca poderosa y versátil que empodera a los desarrolladores con la capacidad de leer, escribir y manipular archivos de Excel sin esfuerzo dentro de sus aplicaciones .NET. Con su API intuitiva y completa, IronXL simplifica el proceso de trabajar con hojas de cálculo, permitiendo a los desarrolladores extraer datos perfectamente, realizar cálculos, crear gráficos y generar informes con facilidad. Ya sea automatizando tareas de importación/exportación de datos, realizando análisis de datos o creando plantillas de Excel dinámicas, IronXL proporciona una solución robusta que ahorra a los desarrolladores tiempo y esfuerzo valiosos, mientras garantiza precisión y confiabilidad en el manejo de datos de Excel. Con su integración fluida, extensa documentación y amplia gama de características, IronXL emerge como la opción preferida para desarrolladores que buscan una herramienta confiable y eficiente para conquistar los desafíos asociados con la manipulación de archivos de Excel en el marco .NET.

3. Instalación de la biblioteca EPPlus

Para instalar la biblioteca EPPlus en tu proyecto C#, primero debes crear un nuevo proyecto basado en consola en Visual Studio. Después de eso, puedes instalarlo fácilmente usando el Gestor de Paquetes NuGet.

Una vez que se ha creado el nuevo proyecto, ve a Herramientas y pasa el cursor sobre el Gestor de Paquetes NuGet, luego selecciona "Administrar Paquetes NuGet para la Solución".

Aparecerá una nueva ventana. En esta nueva ventana, ve a la opción "Explorar" y busca "EPPlus". Aparecerá una lista de paquetes, y debes seleccionar la última versión estable. Luego, haz clic en el botón "Instalar" en el lado derecho para instalar la biblioteca EPPlus.

Así de fácil, EPPlus se añadirá a tu proyecto.

4. Instalación de IronXL

Hay muchos métodos para instalar IronXL, pero en esta sección solo discutiremos la instalación de IronXL usando el Gestor de Paquetes NuGet.

Al igual que en la sección 3, crea un nuevo proyecto y ve a "Herramientas" y abre el Gestor de Paquetes NuGet para soluciones.

En la nueva ventana, ingresa la palabra clave "IronXL" en la barra de búsqueda. Aparecerá una lista, y puedes seleccionar el paquete de IronXL que deseas instalar. Luego, haz clic en el botón "Instalar" para instalar IronXL en tu proyecto.

Ahora IronXL está listo para usarse.

5. Lectura de archivos de Excel y datos en DataTable mediante la biblioteca EPPlus

En esta sección, examinaremos el código para leer Excel como un DataTable utilizando la biblioteca de Excel del paquete EPPlus de C#.

Necesitamos un archivo de Excel de ejemplo para leer como un DataTable. Para ese propósito, generaremos un archivo de Excel de ejemplo.

A continuación, 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"; // Specify the path to your Excel file
        var data = ExcelDataToDataTable(path, "Table");

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in data.Rows)
        {
            foreach (var wsrow in row.ItemArray)
            {
                Console.Write(wsrow + " ");
            }
            Console.WriteLine();
        }
    }

    /// <summary>
    /// Converts Excel sheet data to a DataTable.
    /// </summary>
    /// <param name="filePath">The path to the Excel file.</param>
    /// <param name="sheetName">The name of the worksheet to read from.</param>
    /// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
    /// <returns>DataTable containing Excel data.</returns>
    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 exist.");

        // Set the license context for EPPlus
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

        // Load the Excel file into an EPPlus ExcelPackage
        using (var xlPackage = new ExcelPackage(fi))
        {
            // Get the specified worksheet from the workbook
            var worksheet = xlPackage.Workbook.Worksheets[sheetName];

            // Convert the worksheet to a DataTable, optionally using the first row as column names
            dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = hasHeader;
            });
        }

        return dt;
    }
}
using OfficeOpenXml;
using System;
using System.Data;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var path = @"sample.xlsx"; // Specify the path to your Excel file
        var data = ExcelDataToDataTable(path, "Table");

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in data.Rows)
        {
            foreach (var wsrow in row.ItemArray)
            {
                Console.Write(wsrow + " ");
            }
            Console.WriteLine();
        }
    }

    /// <summary>
    /// Converts Excel sheet data to a DataTable.
    /// </summary>
    /// <param name="filePath">The path to the Excel file.</param>
    /// <param name="sheetName">The name of the worksheet to read from.</param>
    /// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
    /// <returns>DataTable containing Excel data.</returns>
    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 exist.");

        // Set the license context for EPPlus
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

        // Load the Excel file into an EPPlus ExcelPackage
        using (var xlPackage = new ExcelPackage(fi))
        {
            // Get the specified worksheet from the workbook
            var worksheet = xlPackage.Workbook.Worksheets[sheetName];

            // Convert the worksheet to a DataTable, optionally using the first row as column names
            dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = hasHeader;
            });
        }

        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" ' Specify the path to your Excel file
		Dim data = ExcelDataToDataTable(path, "Table")

		' Iterate through each row in the DataTable and print its contents
		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

	''' <summary>
	''' Converts Excel sheet data to a DataTable.
	''' </summary>
	''' <param name="filePath">The path to the Excel file.</param>
	''' <param name="sheetName">The name of the worksheet to read from.</param>
	''' <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
	''' <returns>DataTable containing Excel data.</returns>
	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 exist.")
		End If

		' Set the license context for EPPlus
		ExcelPackage.LicenseContext = LicenseContext.NonCommercial

		' Load the Excel file into an EPPlus ExcelPackage
		Using xlPackage = New ExcelPackage(fi)
			' Get the specified worksheet from the workbook
			Dim worksheet = xlPackage.Workbook.Worksheets(sheetName)

			' Convert the worksheet to a DataTable, optionally using the first row as column names
			dt = worksheet.Cells(1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
				c.FirstRowIsColumnNames = hasHeader
			End Sub)
		End Using

		Return dt
	End Function
End Class
$vbLabelText   $csharpLabel

El código anterior define un método que toma parámetros de entrada como la ruta del archivo y el nombre de la hoja y devuelve un DataTable como salida. También itera a través de cada fila del DataTable, imprimiendo los datos.

5.1. Salida

La salida será el contenido del archivo de Excel impreso en la consola.

6. Lectura de archivos de Excel como una tabla de datos con IronXL

Convertir una hoja de Excel y leerla como un DataTable es bastante fácil usando IronXL, con solo unas pocas líneas de código. Además, usaremos el archivo de Excel anterior como entrada.

El siguiente ejemplo de código realiza la misma funcionalidad que el código anterior, pero usando IronXL.

using IronXL;
using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file into an IronXL WorkBook
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Get the default worksheet from the workbook
        WorkSheet workSheet = workBook.DefaultWorkSheet;

        // Convert the worksheet to a DataTable, specifying that the first row contains column names
        DataTable table = workSheet.ToDataTable(true);

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in table.Rows)
        {
            foreach (var cell in row.ItemArray)
            {
                Console.Write(cell + " ");
            }
            Console.WriteLine();
        }
    }
}
using IronXL;
using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file into an IronXL WorkBook
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Get the default worksheet from the workbook
        WorkSheet workSheet = workBook.DefaultWorkSheet;

        // Convert the worksheet to a DataTable, specifying that the first row contains column names
        DataTable table = workSheet.ToDataTable(true);

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in table.Rows)
        {
            foreach (var cell in row.ItemArray)
            {
                Console.Write(cell + " ");
            }
            Console.WriteLine();
        }
    }
}
Imports IronXL
Imports System
Imports System.Data

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Load the Excel file into an IronXL WorkBook
		Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

		' Get the default worksheet from the workbook
		Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

		' Convert the worksheet to a DataTable, specifying that the first row contains column names
		Dim table As DataTable = workSheet.ToDataTable(True)

		' Iterate through each row in the DataTable and print its contents
		For Each row As DataRow In table.Rows
			For Each cell In row.ItemArray
				Console.Write(cell & " ")
			Next cell
			Console.WriteLine()
		Next row
	End Sub
End Class
$vbLabelText   $csharpLabel

En el ejemplo de código anterior, simplemente estamos cargando el archivo de Excel y convirtiéndolo en un DataTable usando el método workSheet.ToDataTable(true).

6.1 Salida

La salida será el contenido del archivo de Excel impreso en la consola.

7. Conclusión

En conclusión, cuando se trata de leer archivos de Excel y convertirlos en DataTables en C#, tanto EPPlus como IronXL son bibliotecas excelentes que ofrecen características poderosas y simplifican el proceso.

EPPlus es una biblioteca de código abierto que proporciona una API directa para generar, leer y modificar hojas de cálculo de Excel de forma programática. Soporta tanto los formatos .xls como .xlsx y ofrece un rendimiento eficiente y gestión de memoria.

Por otro lado, IronXL es una biblioteca versátil que permite a los desarrolladores trabajar sin esfuerzo con archivos de Excel en aplicaciones .NET. Ofrece una API intuitiva y características completas para extraer datos, realizar cálculos, crear gráficos y generar informes. IronXL simplifica tareas complejas de manipulación de archivos de Excel, como la importación/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 ambos, IronXL y EPPlus, encontramos que el código de EPPlus es bastante extenso, complejo y difícil de leer. Por otro lado, el código de IronXL es bastante simple y fácil de leer. IronXL utiliza la hoja de trabajo predeterminada, pero en EPPlus necesitas dar el nombre de la hoja de trabajo; de lo contrario, obtendrás un error.

En resumen, recomendaría IronXL sobre EPPlus para manipular archivos de Excel y leer archivos de Excel como DataTables. Además, IronXL ofrece muchas más características que EPPlus en el manejo de archivos de Excel con código simple. Para más tutoriales sobre IronXL, por favor visita el siguiente enlace.

Por favor notaEPPlus es una marca registrada de su respectivo propietario. Este sitio no está afiliado, respaldado ni patrocinado por EPPlus. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son sólo para fines informativos y reflejan información disponible públicamente al momento de escribir.

Preguntas Frecuentes

¿Cómo puedo leer datos de Excel en un DataTable en C#?

Puedes usar IronXL para leer datos de Excel en un DataTable cargando el libro de Excel con WorkBook.Load(), accediendo a la hoja de trabajo y usando ToDataTable() para convertir los datos.

¿Cuáles son las ventajas de usar IronXL para la manipulación de Excel?

IronXL ofrece una API simple e intuitiva que simplifica la manipulación de archivos de Excel. Incluye características como extracción de datos, cálculos, creación de gráficos y generación de informes, lo que lo convierte en una solución integral para los desarrolladores.

¿IronXL soporta formatos de archivo .xls y .xlsx?

Sí, IronXL soporta tanto formatos de archivo .xls como .xlsx, lo que permite flexibilidad al trabajar con diferentes tipos de archivos de Excel.

¿Puedo usar IronXL sin tener Microsoft Office instalado?

Sí, IronXL se puede usar para manipular archivos de Excel sin requerir que Microsoft Office o Excel estén instalados en tu máquina.

¿Cómo instalo IronXL en un proyecto .NET?

Para instalar IronXL, abre el Administrador de Paquetes NuGet en tu proyecto .NET, busca 'IronXL' e instala el paquete. Esto añadirá IronXL a tu proyecto y te permitirá comenzar a usar sus características.

¿Cuáles son algunos problemas comunes al leer archivos de Excel en un DataTable y cómo solucionarlos?

Problemas comunes incluyen rutas de archivo incorrectas, formatos no soportados o datos mal formateados. Asegúrate de que la ruta del archivo sea correcta, que el formato sea soportado y que los datos estén limpios. IronXL proporciona mensajes de error claros para ayudar a solucionar estos problemas.

¿Cómo se compara IronXL con EPPlus para leer archivos de Excel en un DataTable?

IronXL es conocido por su facilidad de uso y características integrales, mientras que EPPlus también es efectivo pero puede ser más complejo de implementar. IronXL proporciona una API más sencilla para los desarrolladores.

¿Es IronXL adecuado para archivos Excel grandes?

Sí, IronXL está diseñado para manejar archivos de Excel grandes de manera eficiente, ofreciendo características que optimizan el rendimiento y el uso de memoria durante la manipulación de archivos.

¿Puede IronXL ser utilizado para análisis de datos y generación de informes?

Absolutamente, IronXL está bien adaptado para el análisis de datos y la generación de informes, ofreciendo características robustas para extraer y manipular datos, crear gráficos y generar informes.

¿Cuáles son las características clave de IronXL que benefician a los desarrolladores?

Las características clave de IronXL incluyen extracción de datos sin problemas, poderosas capacidades de cálculo, fácil creación de gráficos, generación eficiente de informes y amplio soporte para formatos de archivo de Excel.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más