Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES

Uma comparação entre IronXL e CsvHelper

Trabalhar com arquivos CSV pode ser uma tarefa desafiadora. Existem muitas bibliotecas disponíveis hoje para ajudar os desenvolvedores com esta tarefa sem a necessidade de ter o Microsoft Excel instalado.

Neste artigo, vamos discutir e comparar como trabalhar com documentos do Microsoft Excel de forma programática em C# .NET Technologies, seja no formato CSV ou no formato padrão XLSX, usando duas das bibliotecas mais populares, IronXL e CsvHelper.

Vamos primeiro olhar o que ambas as bibliotecas têm a oferecer.

A Biblioteca IronXL

IronXL é uma biblioteca .NET que facilita a leitura e edição de documentos do Microsoft Excel com C#. IronXl.Excel é uma biblioteca de software .NET independente para ler uma ampla gama de formatos de planilhas. Não requer que o Microsoft Excel esteja instalado, nem depende de Interop. Funciona muito suavemente com arquivos CSV.

IronXL é uma API C# intuitiva que permite ler, editar e criar arquivos de planilhas Excel em .NET com desempenho extremamente rápido. IronXL suporta totalmente .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS e Azure.

IronXL é uma biblioteca líder de planilhas Excel para C# no .NET core e .NET framework.

Conjunto de Recursos do IronXL

  • Carregar, ler e editar dados — de XLS/XLSX/CSV/TSV
  • Salvar e exportar — para XLS/XLSX/CSV/TSV/JSON
  • Intervalos — sintaxe WorkSheet["A1:B10"] fácil de usar. Combine e crie intervalos de forma intuitiva.
  • Ordenação — ordenar intervalos, colunas e linhas.
  • Estilização — estilos visuais da célula, fonte, tamanho, padrão de fundo, borda, alinhamento e formatos numéricos.

CsvHelper

Uma biblioteca .NET para leitura e escrita de arquivos CSV. Extremamente rápida, flexível e fácil de usar. Suporta leitura e escrita de objetos de classe personalizados. Todos os códigos de exemplo estão disponíveis na documentação do pacote CsvHelper.

Recursos do CsvHelper

  • Rápido: compila classes instantaneamente para desempenho extremamente rápido
  • Flexível: conservador ao escrever, liberal ao ler
  • Fácil de usar: ler e escrever são tão simples quanto GetRecords<t>() e WriteRecords(records)
  • Altamente configurável
  • Modo Linux
  • Baixo uso de memória

1. Criar um Aplicativo de Console

Use os seguintes passos para criar um Aplicativo de Console:

  • Inicie o IDE do Visual Studio 2022.
  • Clique em "Criar novo projeto".
  • Na página "Criar novo projeto", selecione C# na lista suspensa de idiomas, Windows na lista de Plataformas e Console na lista "Tipos de projeto".
  • Selecione Aplicativo Console (.NET Framework) nos modelos de projeto exibidos.
Csvhelper Alternatives 1 related to 1. Criar um Aplicativo de Console

*Criar Projeto - Aplicativo Console*

  • Clique em Próximo.
  • Na tela de Informações Adicionais, especifique a versão do Framework que você deseja usar. Usaremos o .NET Framework 4.8 neste exemplo.
Csvhelper Alternatives 2 related to 1. Criar um Aplicativo de Console

*Criar Projeto - .NET Framework*

  • Clique em Criar para concluir o processo.

O projeto agora está criado e estamos quase prontos para testar as bibliotecas. No entanto, ainda precisamos instalá-las e integrá-las em nosso projeto. Vamos instalar o IronXL primeiro.

2. Instalação da Biblioteca IronXL C

Você pode baixar e instalar a biblioteca IronXL usando os seguintes métodos:

  1. Usando o Visual Studio com pacotes NuGet
  2. Baixe o pacote NuGet diretamente
  3. Instalar Manualmente com o DLL

Vamos dar uma olhada mais de perto em cada um.

2.1. Usando o Visual Studio com pacotes NuGet

O Visual Studio fornece o Gerenciador de Pacotes NuGet para instalar pacotes NuGet em seus projetos. Você pode acessá-lo através do Menu Projeto, ou clicando com o botão direito do mouse no seu projeto no Solution Explorer.

Csvhelper Alternatives 3 related to 2.1. Usando o Visual Studio com pacotes NuGet

*Selecione-Gerenciar-Pacote-NuGet*

  • Agora, na aba de navegação -> procure por IronXl.Excel -> Instalar
Csvhelper Alternatives 4 related to 2.1. Usando o Visual Studio com pacotes NuGet

*Pesquise por IronXL*

  • E terminamos.

2.2. Baixar o Pacote NuGet Diretamente

Isso pode ser feito visitando o site do NuGet diretamente e baixando o pacote. Os passos são:

2.3. Instalar Manualmente com o DLL

Outra maneira de baixar e instalar a Biblioteca IronXL C# é usar os seguintes passos para instalar o pacote NuGet IronXL através do Prompt de Comando do Desenvolvedor.

  • Abra o Prompt de Comando do Desenvolvedor — geralmente encontrado na pasta do Visual Studio.
  • Digite o seguinte comando: PM> Install-Package IronXl.Excel
  • Pressione Enter
  • Isto irá baixar e instalar o pacote
  • Recarregue seu projeto do Visual Studio e comece a usá-lo

2.4. Adicionar Diretivas Using Necessárias

  1. No Solution Explorer, clique com o botão direito no arquivo Program.cs e, em seguida, clique em Ver Código.
  2. Adicione as seguintes diretivas using ao topo do arquivo de código:
using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

Tudo pronto! IronXL está baixado, instalado e pronto para uso. No entanto, antes disso, devemos instalar o CsvHelper.

3. Instalação do CsvHelper

3.1. Usando o Console do Gerenciador de Pacotes NuGet

Para baixar e instalar a Biblioteca CsvHelper C#, use os seguintes passos para instalar o pacote NuGet através do Prompt de Comando do Desenvolvedor.

  • Abra o Prompt de Comando do Desenvolvedor — geralmente encontrado na pasta do Visual Studio.
  • Digite o seguinte comando: PM> Install-Package CsvHelper -Version 27.2.1
  • Pressione Enter
  • Isto irá baixar e instalar o pacote
  • Recarregue seu projeto do Visual Studio e comece a usá-lo

3.2. Download Direto

Baixe do site da NuGet: https://www.nuget.org/packages/CsvHelper.

4. Trabalhando com Arquivos CSV usando IronXL

Um arquivo de valores separados por vírgulas (CSV) é um arquivo de texto delimitado que usa uma vírgula para separar valores. Cada linha do arquivo é um registro de dados. Manipular esses arquivos para cálculos pode ser uma tarefa desafiadora, e o IronXL oferece uma opção muito boa e fácil de fazer isso sem o Microsoft Excel. Vamos primeiro converter um arquivo CSV em um arquivo Excel normal.

4.1. Convertendo um Arquivo CSV para o Formato Excel

O processo é bastante simples e fácil. Geralmente é feito com uma linha de código.

CSV para formatos Excel:

// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
$vbLabelText   $csharpLabel

4.2. Ler e Manipular Arquivos CSV Convertidos usando IronXL

A classe IronXL WorkBook representa uma planilha Excel. Para abrir um arquivo Excel usando C#, usamos WorkBook.Load e especificamos o caminho do arquivo Excel (.xlsx). O seguinte código de uma linha é usado para abrir o arquivo para leitura:

// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx");
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets/sample.xlsx");
$vbLabelText   $csharpLabel

Cada WorkBook pode conter múltiplos objetos WorkSheet. Estes representam as planilhas no documento Excel. Se o workbook contém planilhas, recupere-as pelo nome da seguinte forma:

// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
$vbLabelText   $csharpLabel

Código para leitura dos valores das células:

// 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);
}
$vbLabelText   $csharpLabel

Depois de carregar e ler a pasta de trabalho e a planilha, o código de exemplo a seguir pode ser usado para fazer alterações nas fórmulas ou aplicá-las a células específicas. O código é o seguinte:

// Set formulas in specific cells
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 in specific cells
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();
$vbLabelText   $csharpLabel

4.3. Salvando o documento Excel de volta para o Arquivo CSV

Escrever arquivos CSV é um processo fácil com o IronXL. O código a seguir simplesmente salva o arquivo Excel no formato CSV usando o método SaveAsCsv.

// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");

// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");

// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
$vbLabelText   $csharpLabel

5. Trabalhando com Arquivos CSV usando CsvHelper

Ler arquivos CSV é uma daquelas tarefas que parecem muito mais fáceis do que realmente são. A biblioteca CsvHelper facilita a escrita de código que é seguro para tipos, rápido e flexível.

5.1. Ler arquivos CSV com CsvHelper

Este é o arquivo CSV de exemplo, ele tem três colunas de texto e uma coluna de número.

FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes

Mapearemos cada linha em um objeto do tipo Person.

// Define the Person class to map CSV records
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
// Define the Person class to map CSV records
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int? Age { get; set; }
    public string IsActive { get; set; }
}
$vbLabelText   $csharpLabel

O código para ler nosso arquivo CSV está abaixo.

// Define the path to the CSV file
var fileName = @"<path to our CSV file>";

// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

// Read CSV file
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>();

        // Iterate over each person record
        foreach (var person in data)
        {
            // Process each Person object
        }
    }
}
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";

// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    Encoding = Encoding.UTF8,
    Delimiter = ","
};

// Read CSV file
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>();

        // Iterate over each person record
        foreach (var person in data)
        {
            // Process each Person object
        }
    }
}
$vbLabelText   $csharpLabel

O tipo de data é IEnumerable<Person>. CsvHelper mapeará automaticamente cada coluna na propriedade com o mesmo nome. Por exemplo, o valor na coluna FirstName será mapeado para Person.FirstName. Podemos então iterar data e acessar os valores em cada linha.

5.2. Converter Dados em Arquivos CSV de um Tipo para Outro

Os arquivos CSV, na maioria das vezes, contêm dados de texto. Por exemplo, a coluna de idade é um valor inteiro e o arquivo CSV contém apenas texto. CsvHelper pode converter dados de strings para tipos padrão do .NET (Boolean, Int32, Int64, Enum). No nosso caso, temos um tipo de dado bool IsActive, que só pode ter um True/False, e contém valores não padronizados. Pode ser convertido criando um conversor personalizado. A formatação do código é a seguinte:

// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        // Convert "Yes" to true and anything else to false
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
    public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
    {
        // Convert "Yes" to true and anything else to false
        return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
    }
}
$vbLabelText   $csharpLabel

Embora bool seja um tipo padrão do .NET, o conversor padrão só consegue lidar com o valor True/False, enquanto nosso arquivo CSV tem Yes/No. Aqui, precisamos subclassificar o DefaultTypeConverter, depois sobrescrever o método ConvertFromString.

6. Licenciamento

IronXL is an openly commercial C# Excel library. É gratuito para desenvolvimento e pode sempre ser licenciado para implantação comercial. Licenses are available for single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. Todas as licenças incluem garantia de reembolso de 30 dias, um ano de suporte e atualizações do produto, validade para desenvolvimento/teste/produção e também uma licença permanente (compra única). O pacote Lite começa a partir de $799.

CsvHelper — ler e escrever arquivos CSV é completamente gratuito para uso comercial.

7. Resumo e Conclusão

Resumo

IronXL é uma biblioteca completa que oferece tudo o que você precisa para manipular um arquivo Excel. É fácil de usar e fornece a facilidade de converter vários formatos para XLSX, assim como de XLSX para outros formatos, como CSV. Esta interconversão oferece ao usuário flexibilidade para trabalhar com vários formatos de arquivos com facilidade.

Por outro lado, CsvHelper é projetado especificamente para trabalhar com formatos de arquivos CSV, o que significa que ele só pode lidar com arquivos CSV. Todos os exemplos de código podem ser encontrados nos arquivos de documentação do CsvHelper. A documentação fornece diretrizes sobre como usar o CsvHelper em seu projeto.

Conclusão

IronXL tem uma vantagem clara sobre CsvHelper, pois suporta usuários trabalhando com múltiplos formatos. Além disso, você pode aplicar fórmulas e estilos de acordo com sua escolha, enquanto CsvHelper só permite leitura e escrita de arquivos CSV com opções limitadas. Além disso, você não pode anexar novos registros a um arquivo CSV existente, pois ele simplesmente sobrescreve as entradas anteriores.

ObserveCsvHelper é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pelo CsvHelper. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Perguntas frequentes

Como posso converter arquivos do Excel para diferentes formatos usando C#?

Com o IronXL, você pode converter arquivos do Excel para diversos formatos, como XLS, XLSX, CSV e TSV. Isso pode ser feito carregando o arquivo no IronXL e salvando-o no formato desejado usando suas versáteis opções de exportação.

Quais são as vantagens de usar o IronXL em vez do CsvHelper para manipulação de arquivos Excel?

O IronXL oferece funcionalidades abrangentes para trabalhar com diversos formatos do Excel, incluindo XLS, XLSX e CSV. Ele suporta recursos como manipulação de dados, formatação e aplicação de fórmulas, tornando-o ideal para projetos que exigem amplo processamento de arquivos do Excel. Em contrapartida, o CsvHelper foi projetado especificamente para operações rápidas e eficientes com arquivos CSV.

Como faço para instalar o IronXL em um projeto C#?

Você pode instalar o IronXL através do Gerenciador de Pacotes NuGet no Visual Studio, pesquisando por 'IronXL'. Alternativamente, você pode baixar o pacote NuGet diretamente ou instalá-lo manualmente, referenciando a DLL em seu projeto.

O IronXL pode ser usado sem o Microsoft Excel instalado?

Sim, o IronXL não exige que o Microsoft Excel esteja instalado no seu sistema. Ele funciona de forma independente para ler, editar e criar arquivos do Excel em diversos formatos.

Como faço para ler e escrever arquivos CSV usando o CsvHelper?

O CsvHelper permite definir uma classe para mapear registros CSV, configurar as definições do CsvHelper e usar o CsvReader e CsvWriter para lidar facilmente com operações em arquivos CSV.

O que torna o CsvHelper uma escolha popular para lidar com arquivos CSV?

O CsvHelper é conhecido por sua velocidade, flexibilidade e facilidade de uso. Ele suporta objetos de classe personalizados e conversões de tipo, tornando-se a escolha ideal para projetos focados exclusivamente no processamento de dados CSV.

Existe algum requisito de licenciamento para usar o IronXL?

Sim, a implantação do IronXL em um ambiente comercial requer uma licença paga. Isso difere do CsvHelper, que é gratuito para uso comercial.

Que tipos de projetos se beneficiariam mais com o IronXL?

Projetos que exigem manipulação extensiva de diversos formatos de arquivos do Excel, incluindo recursos como formatação, classificação de dados e cálculos de fórmulas, se beneficiariam muito com o uso do IronXL devido ao seu conjunto robusto de funcionalidades.

Jordi Bardia
Engenheiro de Software
Jordi é extremamente proficiente em Python, C# e C++, e quando não está utilizando suas habilidades na Iron Software, dedica-se à programação de jogos. Compartilhando as responsabilidades por testes, desenvolvimento e pesquisa de produtos, Jordi agrega imenso valor à melhoria contínua dos produtos. Essa experiência diversificada o mantém ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me