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

Uma comparação entre IronXL e CsvWriter

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

Neste artigo, vamos discutir e comparar como trabalhar com documentos do Microsoft Excel programaticamente em tecnologias C# .NET, seja no formato CSV ou no formato Excel padrão, usando duas das bibliotecas mais populares, IronXL e CSVWriter.

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 do Interop.

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

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

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 — fácil de usar a sintaxe WorkSheet ["A1:B10"]. Combine e crie intervalos de forma intuitiva.
  • Ordenação — ordenar intervalos, colunas e linhas.
  • Estilos — estilos visuais de célula, fonte, tamanho, padrão de fundo, borda, alinhamento e formatos de números.

CSVWriter

Uma biblioteca .NET para escrever arquivos CSV. Extremamente rápida, flexível e fácil de usar. Suporta a escrita de objetos de classe personalizados.

Características do CsvWriter

  • Rápido: compila classes instantaneamente para desempenho extremamente rápido
  • Flexível: conservador ao escrever, liberal ao ler
  • Fácil de usar: leitura e escrita são tão simples como 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", selecioneC#na lista suspensa de idiomas, Windows na lista de Plataformas eConsole na lista de "Tipos de projeto".
  • SelecioneAplicativo de Console (.NET Framework) nos modelos de projeto exibidos.
Csvhelper Alternatives 1 related to 1. Criar um Aplicativo de Console

*Criar Projeto - Aplicativo Console*

  • Clique emPróximo.
  • Na tela deInformações Adicionais, especifique aversão do Frameworkque gostaria de usar. Vamos usar.NET Framework 4.8neste exemplo.
Csvhelper Alternatives 2 related to 1. Criar um Aplicativo de Console

*Criar Projeto - .NET Framework*

  • Clique emCriarpara completar 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 C# IronXL é usar os seguintes passos para instalar o pacote IronXLNuGet através do Developer Command Prompt.

  • Abra o Developer Command Prompt— geralmente encontrado na pasta do Visual Studio.
  • Digite o seguinte comando:
    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 do mouse 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 CSVWriter

3.1. Usando o Console do Gerenciador de Pacotes NuGet

Para trabalhar com CSVWriter, você precisa baixar e instalar a biblioteca C# CsvHelper. Para isso, use os seguintes passos para instalar o pacote NuGet através do Developer Command Prompt.

  • Abra o Developer Command Prompt— geralmente encontrado na pasta do Visual Studio.
  • Digite o seguinte comando:
    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
  • Verifique o detalhe do método CsvHelper.CsvWriter para implementação

3.2. Download Direto

Download from the NuGet website: 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, mas o IronXL oferece uma opção muito boa e fácil para alcançar isso, sem usar 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 specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get 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 IronXLWorkBook representa uma planilha do 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 Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open 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

Após carregar e ler o workbook e a worksheet, o seguinte exemplo de código pode ser usado para fazer alterações em fórmulas ou aplicar fórmulas a células específicas. O código é o seguinte:

// 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();
$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 seguinte código simplesmente salva o arquivo Excel no formato CSV usando o método SaveAsCsv.

// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
$vbLabelText   $csharpLabel

5. Trabalhando com Dados CSV usando CSVWriter

Escrever dados em um arquivo CSV é uma operação comum. O método CSVWriter do CSVHelper com separador fornecido lida com todos os caracteres e caracteres de nova linha em um escritor CSV muito simples lançado para C#. Aqui vamos ver como escrever dados usando CSVWriter.

5.1. Criar uma Aplicação de Console Simples

Crie uma aplicação de console CSVWriter simples com separador fornecido usando o Visual Studio. Uma vez criado o projeto, o próximo passo é criar uma classe Person:

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

Dentro do método Main, vamos agora fazer uma lista de objetos Person que escreveremos no arquivo 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" }
};
$vbLabelText   $csharpLabel

5.2. Escrevendo em um Arquivo CSV em C# com Configurações Padrão

CsvHelper emergiu como a maneira padrão de escrever CSV em C# usando o método CSVWriter, e é muito 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);
}
$vbLabelText   $csharpLabel

5.3. Acrescentando Dados

Precisamos ter em mente que toda vez que executarmos nosso programa, os arquivos CSV antigos serão sobrescritos. Às vezes, queremos que os dados sejam acrescentados ao final de um arquivo, em vez de sobrescrever dados existentes. CSVWriter não fornece um método para fazer isso, pois abrir/gravar um arquivo não é responsabilidade do CSVWriter com separador fornecido. Podemos conseguir isso usando um FileStream e, em seguida, construir nosso StreamWriter usando esse FileStream. Embora isso não esteja dentro do escopo deste artigo, eu vou te mostrar como fazer isso, pois é parte integrante de qualquer aplicação.

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

Acrescentar a um arquivo existente é complicado, no entanto, pois a ordenação pode ser alterada quando acrescentamos, ou podemos ter adicionado novas propriedades. Devemos garantir levar isso em conta ao acrescentar.

6. Licenciamento

IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor 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.

CSVWriter com separador fornecido é um elemento separado por vírgula e completamente gratuito para uso comercial amigável.

7. Resumo e Conclusão

Resumo

IronXL é uma biblioteca completa que oferece tudo o que você precisa para manipular um arquivo Excel. Ela fornece a facilidade de converter vários formatos para XLSX e também de XLSX para outros formatos, como CSV. Essa interconversão oferece aos usuários a flexibilidade de manipular outros formatos de arquivo com facilidade.

Por outro lado, o CSVWriter trabalha apenas com formatos de arquivo CSV e com opções muito limitadas. Os usuários não podem alternar entre diferentes formatos de arquivo, enquanto com o IronXL eles podem. Todos os exemplos de código podem ser encontrados nos arquivos de documentação do CsvHelper. Este documento fornece diretrizes sobre como usar o CSVWriter em seu projeto.

Conclusão

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

Perguntas frequentes

Quais são as alternativas ao CSVWriter para manipular documentos do Excel em C#?

IronXL é uma excelente alternativa ao CSVWriter para manipulação de documentos Excel em C#. Ele permite ler, editar e exportar diversos formatos do Excel, como XLS, XLSX, CSV e TSV, sem a necessidade do Microsoft Excel.

Como posso converter um arquivo CSV para o formato Excel usando uma biblioteca .NET?

Com o IronXL, você pode converter facilmente um arquivo CSV para o formato Excel, carregando o CSV em uma planilha e salvando-o como um arquivo XLSX. Esse processo envolve comandos de código simples para manipular e salvar os arquivos.

Quais as vantagens que o IronXL oferece em relação ao CSVWriter?

O IronXL oferece diversas vantagens em relação ao CSVWriter, incluindo suporte a múltiplos formatos de arquivo, a capacidade de aplicar fórmulas do Excel e funcionalidades avançadas como classificação e formatação de dados. Em contrapartida, o CSVWriter se limita ao processamento de arquivos CSV.

Como faço para instalar o IronXL no meu projeto C#?

Você pode instalar o IronXL em seu projeto C# através do Gerenciador de Pacotes NuGet no Visual Studio. Alternativamente, você pode baixar o pacote NuGet ou instalar manualmente a DLL através do Prompt de Comando do Desenvolvedor.

O IronXL pode ser usado em ambientes .NET Core e Azure?

Sim, o IronXL suporta múltiplas plataformas, incluindo .NET Core e Azure, tornando-o uma escolha versátil para o desenvolvimento de aplicações que requerem manipulação de arquivos Excel em diferentes ambientes.

É possível escrever objetos de classe personalizados em um arquivo CSV usando o CSVWriter?

Sim, o CSVWriter permite gravar objetos de classe personalizados em um arquivo CSV. Ele oferece uma abordagem flexível e fácil de usar para gravar dados de forma eficiente ao trabalhar com arquivos CSV.

Quais são os requisitos de licenciamento para usar o IronXL em aplicações comerciais?

O IronXL requer uma licença para uso comercial. É gratuito para fins de desenvolvimento, mas diferentes licenças estão disponíveis com base nas necessidades de implantação, seja para projetos individuais ou aplicações de nível empresarial.

Como o IronXL lida com fórmulas do Excel?

O IronXL permite aplicar e manipular fórmulas do Excel em suas planilhas, oferecendo funcionalidades robustas para cálculo e análise de dados dinâmicos diretamente em seus aplicativos C#.

Quais são alguns problemas comuns de resolução de problemas ao usar o IronXL?

Problemas comuns com o IronXL podem incluir incompatibilidade de formato de arquivo, incompatibilidade de tipos de dados ou erros de instalação. Garantir que as referências do seu projeto estejam configuradas corretamente e verificar os formatos de dados pode ajudar a resolver esses problemas.

O IronXL consegue adicionar dados a um arquivo Excel existente?

Sim, o IronXL pode adicionar dados a um arquivo Excel existente. Ele permite abrir uma planilha existente, modificá-la adicionando novos dados e, em seguida, salvar as alterações sem sobrescrever o conteúdo existente.

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