C# Gravar arquivos CSV

Resumo : neste tutorial, você aprenderá como usar a CsvHelperbiblioteca para gravar dados em um CSVarquivo a partir de um programa C#.

Este tutorial pressupõe que você tenha uma visão geral rápida da CsvHelperbiblioteca e já a instale em seu projeto. Se este não for o caso, você pode CSVprimeiro seguir a leitura de um tutorial de arquivo.

Gravando dados em um arquivo CSV

O exemplo a seguir demonstra como usar a CsvHelperbiblioteca para gravar dados em um CSVarquivo:

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 Employeeclasse 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 Nameatributo, que especifica os nomes das colunas dos CSVarquivos de saída.

A seguir, crie um Listconjunto de Employeeobjetos e inicialize-o com alguns dados de amostra no Main()método da Programclasse:

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 StreamWriterobjeto para gravar em um CSVarquivo chamado “ output.csv“. Além disso, crie um CsvWriterobjeto que grava os dados no CSVarquivo:

using var writer = new StreamWriter("output.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);Linguagem de código:  C#  ( cs )

Configuramos o CsvWriterobjeto 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 CSVarquivo chamando o WriteHeader()método do CsvWriterobjeto.

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 Employeeobjeto da lista, chame o WriteRecordmétodo do CsvWriterobjeto para gravar os dados do funcionário na linha atual e chame o NextRecordmé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 CsvHelperbiblioteca para gravar dados em um CSVarquivo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *