Resumo : neste tutorial, você aprenderá como usar a CsvHelper
biblioteca para gravar dados em um CSV
arquivo a partir de um programa C#.
Este tutorial pressupõe que você tenha uma visão geral rápida da CsvHelper
biblioteca e já a instale em seu projeto. Se este não for o caso, você pode CSV
primeiro seguir a leitura de um tutorial de arquivo.
Gravando dados em um arquivo CSV
O exemplo a seguir demonstra como usar a CsvHelper
biblioteca para gravar dados em um CSV
arquivo:
using CsvHelper;
using CsvHelper.Configuration.Attributes;
using System.Globalization;
class Employee
{
[Name("First Name")]
public string? FirstName { get; set; }
[Name("Last Name")]
public string? LastName { get; set; }
[Name("Joined Date")]
public DateOnly? JoinedDate { get; set; }
[Name("Salary")]
public decimal? Salary { get; set; }
[Name("Active")]
public string? Active { get; set; }
}
class Program
{
static void Main(string[] args)
{
var employees = new List<Employee> {
new Employee {
FirstName = "John", LastName = "Doe", JoinedDate = new DateOnly(2020, 1, 1), Salary = 50000.00M, Active = "Yes"
},
new Employee {
FirstName = "Jane", LastName = "Doe", JoinedDate = new DateOnly(2021, 6, 15), Salary = 60000.00M, Active = "Yes"
},
new Employee {
FirstName = "Bob", LastName = "Smith", JoinedDate = new DateOnly(2019, 3, 10), Salary = 70000.00M, Active = "No"
}
};
using var writer = new StreamWriter("output.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteHeader<Employee>();
csv.NextRecord();
foreach (var employee in employees)
{
csv.WriteRecord(employee);
csv.NextRecord();
}
}
}
Linguagem de código: C# ( cs )
O conteúdo do arquivo output.csv ficará assim:
First Name,Last Name,Joined Date,Salary,Active
John,Doe,01/01/2020,50000.00,Yes
Jane,Doe,06/15/2021,60000.00,Yes
Bob,Smith,03/10/2019,70000.00,No
Linguagem de código: texto simples ( texto simples )
Como funciona.
Primeiro, defina a Employee
classe que possui propriedades para nome, sobrenome, data de ingresso, salário e status ativo:
class Employee
{
[Name("First Name")]
public string? FirstName { get; set; }
[Name("Last Name")]
public string? LastName { get; set; }
[Name("Joined Date")]
public DateOnly? JoinedDate { get; set; }
[Name("Salary")]
public decimal? Salary { get; set; }
[Name("Active")]
public string? Active { get; set; }
}
Linguagem de código: C# ( cs )
Observe que marcamos essas propriedades com o Name
atributo, que especifica os nomes das colunas dos CSV
arquivos de saída.
A seguir, crie um List
conjunto de Employee
objetos e inicialize-o com alguns dados de amostra no Main()
método da Program
classe:
var employees = new List<Employee> {
new Employee {
FirstName = "John", LastName = "Doe", JoinedDate = new DateOnly(2020, 1, 1), Salary = 50000.00M, Active = "Yes"
},
new Employee {
FirstName = "Jane", LastName = "Doe", JoinedDate = new DateOnly(2021, 6, 15), Salary = 60000.00M, Active = "Yes"
},
new Employee {
FirstName = "Bob", LastName = "Smith", JoinedDate = new DateOnly(2019, 3, 10), Salary = 70000.00M, Active = "No"
}
};
Linguagem de código: C# ( cs )
Em seguida, crie um StreamWriter
objeto para gravar em um
arquivo chamado “ CSV
output.csv
“. Além disso, crie um CsvWriter
objeto que grava os dados no
arquivo:CSV
using var writer = new StreamWriter("output.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
Linguagem de código: C# ( cs )
Configuramos o CsvWriter
objeto com InvariantCulture
, que formata a saída de forma consistente, independentemente das configurações culturais do usuário.
Depois disso, escreva a linha do cabeçalho no CSV
arquivo chamando o WriteHeader()
método do CsvWriter
objeto.
csv.WriteHeader<Employee>();
Linguagem de código: C# ( cs )
Em seguida, chame o NextRecord()
método para passar para a próxima linha:
csv.NextRecord();
Linguagem de código: C# ( cs )
Por fim, itere cada Employee
objeto da lista, chame o WriteRecord
método do CsvWriter
objeto para gravar os dados do funcionário na linha atual e chame o NextRecord
método para passar para a próxima linha:
foreach (var employee in employees)
{
csv.WriteRecord(employee);
csv.NextRecord();
}
Linguagem de código: C# ( cs )
Resumo
- Use a
CsvHelper
biblioteca para gravar dados em umCSV
arquivo.