
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 a instalação do Microsoft Excel, nem depende do Interop.
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 — 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.
Gravador CSV
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 quanto
GetRecords<t>()eWriteRecords(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.

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.

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:
- Usando o Visual Studio com pacotes NuGet
- Baixe o pacote NuGet diretamente
- 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.

Selecione-Gerenciar-Pacote-NuGet
- Agora, na aba de navegação -> procure por IronXL.Excel -> Instalar

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:
- Navigate to https://www.nuget.org/packages/IronXL.Excel
- Selecione "Download Package"
- Dê um duplo clique no pacote baixado
- O pacote será instalado
- Recarregue seu projeto do Visual Studio e comece a usá-lo
2.3. Instalar Manualmente com o DLL
Outra maneira de baixar e instalar a biblioteca IronXL C# é seguir os passos seguintes para instalar o pacote IronXLNuGet através do Command Prompt do Desenvolvedor.
- Abra o Prompt de Comando do Desenvolvedor — geralmente encontrado na pasta do Visual Studio.
- Digite o seguinte comando:
- 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
- No Solution Explorer, clique com o botão direito no arquivo Program.cs e, em seguida, clique em Ver Código.
- Adicione as seguintes diretivas using ao topo do arquivo de código:
using IronXL;Imports IronXLTudo 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 fazer isso, utilize os passos seguintes para instalar o pacote NuGet através do Command Prompt do Desenvolvedor.
- Abra o Prompt de Comando do Desenvolvedor — geralmente encontrado na pasta do Visual Studio.
- Digite o seguinte comando:
- 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
Baixar do site do 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, 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
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Get the default worksheet
Dim ws As WorkSheet = workbook.DefaultWorkSheet
' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")4.2. Ler e Manipular Arquivos CSV Convertidos usando IronXL
A classe WorkBook do IronXL 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
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")Cada WorkBook pode conter vários 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
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")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.
For Each cell In worksheet("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cellApó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()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
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
' Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' Saved as : SaveAsCSV.Sheet1.csv5. 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 Property Id() As Integer
Public Property Name() As String
Public Property IsLiving() As Boolean
End ClassDentro 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" }
};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"
}
}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 writer = New StreamWriter("filePersons.csv")
Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(myPersonObjects)
End Using
End Using5.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);
}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 UsingAcrescentar 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 é uma biblioteca Excel C# abertamente comercial. É gratuito para desenvolvimento e pode sempre ser licenciado para implantação comercial. Licenças estão disponíveis para uso em projetos únicos, desenvolvedores individuais, agências e corporações globais, bem como para redistribuição SaaS e OEM. 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 $999.
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.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados



