COMPARACIóN CON OTROS COMPONENTES

Comparación entre IronXL y CsvHelper

Publicado en 9 de mayo, 2022
Compartir:

Trabajar con archivos CSV puede ser una tarea difícil. Hoy en día existen muchas bibliotecas que ayudan a los desarrolladores en esta tarea sin necesidad de tener instalado Microsoft Excel.

En este artículo, vamos a discutir y comparar cómo trabajar con documentos de Microsoft Excel mediante programación en C# .NET Technologies, ya sea en formato CSV o en formato estándar XLSX, utilizando dos de las librerías más populares, IronXL y CsvHelper.

Veamos en primer lugar lo que ofrecen ambas bibliotecas.

Biblioteca IronXL

IronXL es una librería .NET que facilita la lectura y edición de documentos Microsoft Excel con C#. IronXL.Excel es una biblioteca de software .NET independiente para leer una amplia gama de formatos de hojas de cálculo. No requiere tener instalado Microsoft Excel ni depende de Interop. Funciona sin problemas con archivos CSV.

IronXL es una intuitiva API de C# que permite leer, editar y crear archivos de hojas de cálculo Excel en .NET con un rendimiento rapidísimo. IronXL es totalmente compatible con .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS y Azure.

IronXL es una biblioteca de hojas de cálculo de Excel para C# líder en .NET core y .net framework.

Características de IronXL

  • Carga, lectura y edición de datos - desde XLS/XLSX/CSV/TSV
  • Guardar y exportar - a XLS/XLSX/CSV/TSV/JSON
  • Rangos: hoja de trabajo fácil de usar["A1:B10"] sintaxis. Combine y cree gamas de forma intuitiva.
  • Ordenar - ordenar rangos, columnas y filas.
  • Estilización: estilos visuales de celda, fuente, tamaño, patrón de fondo, borde, alineación y formatos de número.

CsvHelper

Una biblioteca .NET para leer y escribir archivos CSV. Extremadamente rápido, flexible y fácil de usar. Admite la lectura y escritura de objetos de clase personalizados. Todos los códigos de ejemplo están disponibles en el paquete CsvHelper documentation install.

Características de CsvHelper

  • Rápido: compila las clases sobre la marcha para un rendimiento extremadamente rápido.
  • Flexible: conservador al escribir, liberal al leer
  • Fácil de usar: leer y escribir es tan sencillo como GetRecords() y WriteRecords(registros)
  • Altamente configurable
  • Modo Linux
  • Bajo consumo de memoria

1. Crear una aplicación de consola

Siga los siguientes pasos para crear una Aplicación de Consola:

  • Inicie el IDE de Visual Studio 2022.
  • Haga clic en "Crear nuevo proyecto".
  • En la página "Crear nuevo proyecto", seleccione C# en la lista desplegable de lenguajes, Windows en la lista Plataformas y Consola en la lista "Tipos de proyecto".
  • Seleccione Console App(.NET Framework) de las plantillas de proyecto mostradas.
    Csvhelper Alternatives 1 related to 1. Crear una aplicación de consola

    Crear proyecto - Aplicación de consola

  • Pulse Siguiente.
  • En la pantalla Información adicional, especifique la versión de Framework que desea utilizar. En este ejemplo utilizaremos .NET Framework 4.8.

    Csvhelper Alternatives 2 related to 1. Crear una aplicación de consola

    Crear proyecto - .NET Framework

  • Haga clic en Crear para completar el proceso.

    El proyecto ya está creado y casi estamos listos para probar las bibliotecas. Sin embargo, aún tenemos que instalarlos e integrarlos en nuestro proyecto. Primero instalemos IronXL.

2. Instalación de la librería IronXL C

Puede descargar e instalar la biblioteca IronXL mediante los siguientes métodos:

  1. Uso de Visual Studio con paquetes NuGet

  2. Descargue directamente el paquete NuGet

  3. Instalación manual con la DLL

    Analicemos cada uno de ellos.

2.1. Uso de Visual Studio con paquetes NuGet

Visual Studio proporciona el gestor de paquetes NuGet para instalar paquetes NuGet en sus proyectos. Puede acceder a él a través del menú Proyecto o haciendo clic con el botón derecho del ratón en el Explorador de soluciones.

Csvhelper Alternatives 3 related to 2.1. Uso de Visual Studio con paquetes NuGet

Select-Manage-NuGet-Package

  • Ahora, desde la pestaña Examinar -> busca IronXL.Excel -> Instalar

    Csvhelper Alternatives 4 related to 2.1. Uso de Visual Studio con paquetes NuGet

    Buscar IronXL

  • Y hemos terminado.

2.2. Descargue directamente el paquete NuGet

Para ello, visite directamente el sitio de NuGet y descargue el paquete. Los pasos son:

2.3. Instalación manual con la DLL

Otra forma de descargar e instalar la Biblioteca IronXL C# es hacer uso de los siguientes pasos para instalar el paquete IronXL NuGet a través del Símbolo del sistema del desarrollador.

  • Abra el Instructor de comandos para desarrolladores, que suele encontrarse en la carpeta de Visual Studio.
  • Escriba el siguiente comando: PM > Install-Package IronXL.Excel
  • Pulse Intro
  • Esto descargará e instalará el paquete
  • Recarga tu proyecto de Visual Studio y empieza a utilizarlo

2.4. Añadir las directivas de uso necesarias

  1. En el Explorador de soluciones, haga clic con el botón derecho en el archivo Program.cs y, a continuación, haga clic en Ver código.

  2. Añada las siguientes directivas de uso al principio del archivo de código:
using IronXL;
using IronXL;
Imports IronXL
VB   C#

Todo hecho! IronXL está descargado, instalado y listo para usar. Sin embargo, antes debemos instalar CsvHelper.

3. Instalación de CsvHelper

3.1. Uso de la consola del gestor de paquetes NuGet

Para descargar e instalar la librería CsvHelper C#, siga los siguientes pasos para instalar el paquete NuGet a través del símbolo del sistema del desarrollador.

  • Abra el Instructor de comandos para desarrolladores, que suele encontrarse en la carpeta de Visual Studio.
  • Escriba el siguiente comando: PM> Install-Package CsvHelper -Version 27.2.1
  • Pulse Intro
  • Esto descargará e instalará el paquete
  • Recarga tu proyecto de Visual Studio y empieza a utilizarlo

3.2. Descarga directa

Descárguelo del sitio web de NuGet: https://www.nuget.org/packages/CsvHelper/

4. Trabajando con Archivos CSV usando IronXL

Valores separados por comas(CSV) es un archivo de texto delimitado que utiliza una coma para separar los valores. Cada línea del fichero es un registro de datos. Manipular estos archivos para cálculos puede ser una tarea desafiante, y IronXL provee una opción bastante buena y fácil para hacerlo sin Microsoft Excel. Convirtamos primero un archivo CSV en un archivo Excel normal.

4.1. Conversión de un archivo CSV a formato Excel

El proceso es bastante sencillo y fácil. Suele hacerse con una línea de código.

**Formatos deCSV a Excel

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
VB   C#

4.2. Leer y manipular archivos CSV convertidos usando IronXL

La clase IronXL WorkBook representa una hoja de Excel. Para abrir un archivo Excel utilizando C#, utilizamos WorkBook.Load y especificamos la ruta del archivo Excel(.xlsx). El siguiente código de una línea se utiliza para abrir el archivo para su lectura:

//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
//Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
'Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
VB   C#

Cada WorkBook puede contener varios objetos WorkSheet. Representan hojas de trabajo en el documento Excel. Si el libro contiene hojas de cálculo, recupérelas por nombre de la siguiente manera:

//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
//Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
'Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
VB   C#

Código para leer los valores de las celdas:

// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet ["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from Ranges of cells elegantly.
For Each cell In worksheet ("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
VB   C#

Después de cargar y leer el libro y la hoja de trabajo, se puede utilizar el siguiente ejemplo de código para realizar cambios en las fórmulas o aplicarlos a celdas específicas. El código es el siguiente:

// Set Formulas
worksheet ["A1"].Formula = "Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "Max(C3:C7)";
 
// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
// Set Formulas
worksheet ["A1"].Formula = "Sum(B8:C12)";
worksheet ["B8"].Formula = "=C9/C11";
worksheet ["G30"].Formula = "Max(C3:C7)";
 
// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
' Set Formulas
worksheet ("A1").Formula = "Sum(B8:C12)"
worksheet ("B8").Formula = "=C9/C11"
worksheet ("G30").Formula = "Max(C3:C7)"
'
' Force recalculate all formula values in all sheets.  
workbook.EvaluateAll()
VB   C#

4.3. Guardar el documento Excel en un archivo CSV

Escribir archivos CSV es un proceso fácil con IronXL. El siguiente código simplemente guarda el archivo Excel en formato CSV utilizando el método SaveAsCsv.

WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
'Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
'Saved as : SaveAsCSV.Sheet1.csv
VB   C#

5. Trabajar con archivos CSV utilizando CsvHelper

La lectura de archivos CSV es una de esas tareas que parecen mucho más fáciles de lo que realmente son. La biblioteca CsvHelper facilita la escritura de código seguro, rápido y flexible.

5.1. Leer archivos CSV con CsvHelper

Este es el archivo CSV de ejemplo, tiene tres columnas de texto y una columna numérica.

FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'FirstName,LastName,Age,IsActive Ali,Talal,30,Yes Affan,Ahmad,31,No Saad,Bhatti,31,Yes
VB   C#

Asignaremos cada fila a un objeto de tipo Persona.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
Public Class Person
	Public Property FirstName() As String
	Public Property LastName() As String
	Public Property Age() As Integer?
	Public Property IsActive() As String
End Class
VB   C#

El código para leer nuestro archivo CSV se encuentra a continuación.

var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var textReader = new StreamReader(fs, Encoding.UTF8))
    using (var csv = new CsvReader(textReader, configuration))
    {
        var data = csv.GetRecords<Person>();

        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
var fileName = @"<path to our CSV file>";
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    using (var textReader = new StreamReader(fs, Encoding.UTF8))
    using (var csv = new CsvReader(textReader, configuration))
    {
        var data = csv.GetRecords<Person>();

        foreach (var person in data)
        {
            // Do something with values in each row
        }
    }
}
Dim fileName = "<path to our CSV file>"
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
	.Encoding = Encoding.UTF8,
	.Delimiter = ","
}

Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)
	Using textReader = New StreamReader(fs, Encoding.UTF8)
	Using csv = New CsvReader(textReader, configuration)
		Dim data = csv.GetRecords(Of Person)()

		For Each person In data
			' Do something with values in each row
		Next person
	End Using
	End Using
End Using
VB   C#

El tipo de datos es IEnumerable. CsvHelper asignará automáticamente cada columna a la propiedad con el mismo nombre. Por ejemplo, el valor de la columna FirstName se asignará a Person.FirstName. A continuación, podemos iterar los datos y acceder a los valores de cada fila.

5.2. Convertir datos de archivos CSV de un tipo a otro

Los archivos CSV contienen principalmente datos de texto. Por ejemplo, la columna de edad es un valor entero y el archivo CSV sólo contiene texto. CsvHelper puede convertir datos de cadena en tipos .NET estándar(Booleano, Int32, Int64, Enum). En nuestro caso, tenemos un tipo de dato bool IsActive, que sólo puede tener Verdadero/Falso, y contiene valores no estándar. Se puede convertir creando un conversor personalizado. El estilo del código es el siguiente:

public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
Public Class CustomBooleanConverter
	Inherits DefaultTypeConverter

	Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
		Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
	End Function
End Class
VB   C#

Aunque bool es un tipo .NET estándar, el conversor por defecto sólo puede manejar valores True/False, mientras que nuestro archivo CSV tiene Yes/No. Aquí, tenemos que subclasificar el DefaultTypeConverter, a continuación, anular el método ConvertFromString.

6. Licencias

IronXL es un producto abiertamente comercial Biblioteca Excel en C. Es gratuito para el desarrollo y siempre se puede obtener una licencia para su implantación comercial.Licencias disponibles para uso en un solo proyecto, desarrolladores individuales, agencias y corporaciones globales, así como SaaS y redistribución OEM. Todas las licencias incluyen una garantía de devolución del dinero de 30 días, un año de asistencia técnica y actualizaciones del producto, validez para desarrollo/montaje/producción y también una licencia permanente.(compra única). El paquete Lite parte de $749.

CsvHelper - lectura y escritura de archivos CSV, es completamente gratuito para uso comercial.

7. 7. Resumen y conclusiones

Resumen

IronXL es una completa biblioteca que ofrece todo lo necesario para poder manipular un archivo Excel. Es fácil de usar y le ofrece la posibilidad de convertir varios formatos a XLSX, así como de XLSX a otros formatos, como CSV. Esta interconversión ofrece al usuario flexibilidad para trabajar con varios formatos de archivo con facilidad.

Por otro lado, CsvHelper está diseñado específicamente para trabajar con formatos de archivo CSV, lo que significa que sólo puede tratar con archivos CSV. Todos los ejemplos de código se encuentran en los archivos de documentación de CsvHelper. La documentación le proporciona directrices sobre cómo utilizar CsvHelper en su proyecto.

Conclusión

IronXL tiene una clara ventaja sobre CsvHelper, ya que permite a los usuarios trabajar con múltiples formatos. Además, puede aplicar fórmulas y estilos según su elección, mientras que CsvHelper sólo permite leer y escribir archivos CSV con opciones limitadas. Además, no puede añadir nuevos registros a un archivo CSV existente, ya que simplemente sobrescribe las entradas anteriores.

< ANTERIOR
Comparación entre IronXL y CsvWriter
SIGUIENTE >
Comparación de IronXL y NPOI

¿Listo para empezar? Versión: 2024.11 acaba de salir

Descarga gratuita de NuGet Descargas totales: 1,111,773 Ver licencias >