COMPARACIóN CON OTROS COMPONENTES

Comparación entre IronXL y CsvWriter

Publicado en 18 de mayo, 2022
Compartir:

Trabajar con archivos CSV puede ser una tarea difícil. Sin embargo, hoy en día hay muchas bibliotecas disponibles para ayudar a los desarrolladores con esta tarea, y 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 tecnologías C# .NET, ya sea en formato CSV o en el formato estándar de Excel, utilizando dos de las librerías más populares, IronXL y CSVWriter.

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 la instalación de Microsoft Excel ni depende de Interop.

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.

CSVWriter

Una biblioteca .NET para escribir archivos CSV. Extremadamente rápido, flexible y fácil de usar. Permite escribir objetos de clase personalizados.

Características de CsvWriter

  • 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 CSVWriter

3.1. Uso de la consola del gestor de paquetes NuGet

Para trabajar con CSVWriter necesitas descargar e instalar la librería CsvHelper C# Library. Para ello, 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
  • Compruebe los detalles del método CsvHelper.CsvWriter para su implementación

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, pero IronXL provee una opción bastante buena y fácil para lograrlo, y sin usar 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 datos CSV utilizando CSVWriter

Escribir datos en un archivo CSV es una operación habitual. CSVHelper método CSVWriter con separador suministrado todos los caracteres y caracteres de nueva línea puede ser manejado en un escritor CSV muy simple liberado para C#. Aquí vamos a ver cómo escribir datos utilizando CSVWriter.

5.1. Crear una aplicación de consola sencilla

Cree una simple aplicación de consola CSVWriter con separador suministrado utilizando Visual Studio. Una vez creado el proyecto, el siguiente paso es crear una clase Persona:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
Public Class Person
	Public Property Id() As Integer
	Public Property Name() As String
	Public Property IsLiving() As Boolean
End Class
VB   C#

Dentro del método Main, hagamos ahora una lista de objetos Persona que escribiremos en el fichero CSV:

var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
Dim myPersonObjects = New List(Of Person)() From {
	New Person With {
		.Id = 1,
		.IsLiving = True,
		.Name = "John"
	},
	New Person With {
		.Id = 2,
		.IsLiving = True,
		.Name = "Steve"
	},
	New Person With {
		.Id = 3,
		.IsLiving = True,
		.Name = "James"
	}
}
VB   C#

5.2. Escribir en un archivo CSV en C# con la configuración predeterminada

CsvHelper ha surgido como la forma estándar de escribir CSV en C# utilizando el método CSVWriter, y es muy fácil de usar:

using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
Using writer = New StreamWriter("filePersons.csv")
Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture)
	csv.WriteRecords(myPersonObjects)
End Using
End Using
VB   C#

5.3. Añadir datos

Debemos tener en cuenta que cada vez que ejecutemos nuestro programa, se sobrescribirán los archivos CSV antiguos. A veces queremos que los datos se añadan al final de un archivo, en lugar de sobrescribir los datos existentes. CSVWriter no proporciona un método para hacer esto, ya que abrir/escribir un archivo no es responsabilidad de CSVWriter con separador suministrado. Podemos conseguirlo utilizando un FileStream, y luego construyendo nuestro StreamWriter utilizando ese FileStream. Aunque esto no entra en el ámbito de este artículo, te mostraré cómo hacerlo, ya que es una parte integral de cualquier aplicación.

var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
Dim configPersons = New CsvConfiguration(CultureInfo.InvariantCulture) With {.HasHeaderRecord = False}
Using stream = File.Open("filePersons.csv", FileMode.Append)
Using writer = New StreamWriter(stream)
Using csv = New CsvWriter(writer, configPersons)
	csv.WriteRecords(myPersonObjects)
End Using
End Using
End Using
VB   C#

Sin embargo, añadir a un archivo existente es complicado, ya que el orden puede haber cambiado al añadir, o puede que hayamos añadido nuevas propiedades. Deberíamos tenerlo en cuenta a la hora de añadir.

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.

CSVWriter con separador suministrado es un elemento separado por comas y 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. Le ofrece la posibilidad de convertir varios formatos a XLSX, y también de XLSX a otros formatos, como CSV. Esta interconversión proporciona a los usuarios la flexibilidad necesaria para manipular otros formatos de archivo con facilidad.

Por otro lado, CSVWriter sólo funciona con formatos de archivo CSV y con opciones muy limitadas. Los usuarios no pueden cambiar entre distintos formatos de archivo, mientras que con IronXL sí pueden. Todos los ejemplos de código se encuentran en los archivos de documentación de CsvHelper. Este documento proporciona directrices sobre cómo utilizar CSVWriter en su proyecto.

Conclusión

IronXL tiene una clara ventaja sobre CSVHelper.CSVWriter, ya que permite 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, y con opciones limitadas. Además, no se pueden añadir nuevos registros a un archivo CSV existente, ya que simplemente se sobrescriben las entradas anteriores.

< ANTERIOR
Comparación entre IronXL y Spire XLS
SIGUIENTE >
Comparación entre IronXL y CsvHelper

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

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