Ir para o conteúdo do rodapé
USANDO O IRONXL

Como converter um arquivo CSV em uma lista em C#

Neste tutorial para iniciantes, vamos ver como ler arquivos CSV em uma lista em C# usando a biblioteca IronXL. Bem, esta é uma das coisas mais básicas que você precisa saber em qualquer linguagem de programação, já que os arquivos CSV são uma maneira muito comum de armazenar dados e transferi-los de um sistema ou aplicativo para outro. Vamos abordar tudo, desde configurar seu projeto até analisar arquivos CSV de forma eficaz.

How to Convert CSV File into List in C#

  1. Crie um Projeto de Console C# no Visual Studio.
  2. Instale a Biblioteca CSV para C# usando o Gerenciador de Pacotes NuGet.
  3. Carregue o arquivo CSV usando o método WorkBook.LoadCSV.
  4. Leia os valores de dados do arquivo e preencha a lista.
  5. Imprima a lista no console.

Configurando Seu Projeto

Etapa 1: Criando um Novo Projeto C

  1. Abra o Visual Studio: Inicie o Visual Studio no seu computador.
  2. Crie um Novo Projeto: Clique em "Criar um novo projeto". Isso abre uma janela onde você pode selecionar o tipo de projeto.
  3. Selecione o Tipo de Projeto: Escolha "Aplicativo de Console (.NET Core)" como seu tipo de projeto por simplicidade.
  4. Nomeie Seu Projeto: Nomeie seu projeto CSVFileReader.
  5. Escolha a Localização: Selecione uma localização adequada em seu dispositivo para salvar este projeto.
  6. Gere o Projeto: Clique em "Criar" para inicializar seu novo projeto C#.

Etapa 2: Instalando a Biblioteca IronXL

  1. Abra o Gerenciador de Pacotes NuGet: No Visual Studio, vá para o menu "Ferramentas", em seguida, selecione "Gerenciador de Pacotes NuGet" e escolha "Gerenciar Pacotes NuGet para Solução...".
  2. Procure por IronXL: Clique na aba "Procurar" e busque por "IronXl.Excel".

    Como Converter Arquivo CSV em Lista no C#: Figura 1 - IronXL

  3. Instale IronXL: Encontre o pacote IronXL nos resultados de pesquisa, selecione-o e clique em "Instalar." Certifique-se de concordar com os termos de licença e revise as alterações.
  4. Verifique a Instalação: Após a instalação, você deve ver o IronXL referenciado nos referenciais do seu projeto.

Agora, seu projeto CSVFileReader está configurado com a biblioteca IronXL, e você está pronto para começar a ler e processar arquivos CSV em C#. Esta configuração forma a base para as tarefas de leitura de CSV que iremos realizar nas seções subsequentes deste tutorial.

Parsing and Processing CSV Files in C#

Com o projeto configurado e a biblioteca IronXL instalada, vamos nos concentrar em analisar e processar arquivos CSV. Trabalharemos dentro do arquivo Program.cs, que é gerado automaticamente no seu projeto CSVFileReader.

Etapa 1: Especificando o Caminho do Arquivo

Antes de podermos ler qualquer dado, precisamos saber onde nosso arquivo CSV está localizado. Defina uma variável no método Main para armazenar o caminho do arquivo.

string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
$vbLabelText   $csharpLabel

Etapa 2: Carregar o Arquivo CSV

O IronXL torna fácil carregar um arquivo CSV. Use o método WorkBook.LoadCSV para ler o arquivo CSV em um objeto WorkBook.

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
$vbLabelText   $csharpLabel

Etapa 3: Definindo uma Estrutura de Dados

Crie uma classe que represente a estrutura de dados no seu arquivo CSV. Por exemplo, se o seu CSV contém informações sobre pessoas, defina uma classe Person assim:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
$vbLabelText   $csharpLabel

Etapa 4: Analisando os Dados do CSV

Nesta etapa, vamos analisar o arquivo CSV e preencher um List<Person> com os dados. Estamos usando o IronXL para lidar com a leitura do CSV, e a chave é processar corretamente cada linha ou linha do CSV, levando em conta os cabeçalhos e quaisquer linhas vazias em potencial. Aqui está uma descrição detalhada do código:

List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
$vbLabelText   $csharpLabel

Neste processo de análise, primeiro inicializamos um List<Person> para armazenar os dados analisados e usamos uma bandeira booleana isFirstRow para pular a linha de cabeçalho do arquivo CSV. O loop foreach percorre cada linha do arquivo CSV. Durante a primeira iteração, a linha de cabeçalho é identificada e pulada, garantindo que apenas as linhas de dados sejam processadas. Em seguida, verificamos cada linha para garantir que não está vazia usando row.IsEmpty. Esta etapa é crítica para evitar erros de análise com linhas vazias.

Para cada linha de dados, convertemos a linha em uma matriz de células (row.ToArray()) e então criamos um objeto Person com esses dados. É crucial analisar e converter corretamente os tipos de dados, como converter a string 'Idade' para um inteiro. O objeto Person analisado é então adicionado à nossa lista people. Esta abordagem garante que apenas linhas de dados válidas sejam processadas e armazenadas, lidando efetivamente com problemas potenciais como strings não numéricas em colunas numéricas ou linhas vazias inesperadas.

Etapa 5: Exibindo os Dados

Após analisar os dados CSV em nosso List<Person>, a próxima etapa importante é exibir e verificar os dados. Isso não só ajuda a garantir que nossa análise foi bem-sucedida, mas também nos permite observar a saída e realizar uma verificação rápida de qualidade dos dados. Veja como você pode implementar isso:

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
$vbLabelText   $csharpLabel

Aqui está o código completo do Program.cs:

using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
$vbLabelText   $csharpLabel

Saída do Código

Quando você executar o arquivo, ele exibirá os dados da lista no console:

Como Converter Arquivo CSV em Lista no C#: Figura 2 - Saída da Lista

Manipulando Diferentes Tipos de Dados

Ao manipular vários tipos de dados em um arquivo CSV, é importante adaptar a lógica de análise ao tipo específico de cada coluna de dados. No exemplo da classe Person, enquanto o Name é uma string e pode ser diretamente atribuído usando StringValue, campos numéricos como Age requerem conversão de string para inteiro usando Int32.Parse ou Convert.ToInt32. Isso é essencial para evitar erros de incompatibilidade de tipo.

Para tipos de dados mais complexos, como datas, use DateTime.Parse para converter representações de strings de datas em objetos DateTime. É importante estar ciente do formato de data usado em seu arquivo CSV e garantir que ele corresponde ao formato esperado em seu código. Formatos de data inconsistentes podem levar a erros de análise ou interpretação incorreta dos dados.

Conclusão

Você acabou de aprender como ler, analisar e exibir os dados de um arquivo CSV usando IronXL em C#. Essa abordagem pode ser empregada em diferentes tipos de estruturas de dados e formatos de arquivo. Assim, isso representa uma habilidade geral útil para qualquer desenvolvedor por aí que escolha C# como sua principal linguagem.

IronXL oferece uma avaliação gratuita para os usuários experimentarem seus recursos. Uma vez que o período de teste termina, o licenciamento para IronXL começa a partir de um preço inicial de $799.

Lembre-se de que exceções e casos de borda devem ser tratados para escrever um código mais robusto, especialmente ao gerenciar diferentes tipos de dados e usar arquivos grandes. Continue experimentando e explorando mais recursos do IronXL para melhorar o processamento de seus dados em C#. Boa programação!

Perguntas frequentes

Como posso ler arquivos CSV e armazená-los em uma lista usando C#?

É possível ler arquivos CSV e convertê-los em uma lista em C# usando a biblioteca IronXL. Primeiro, crie um projeto de console C# no Visual Studio e instale o IronXL através do Gerenciador de Pacotes NuGet. Em seguida, use o método WorkBook.LoadCSV para carregar o arquivo CSV e analisar os dados, convertendo-os em uma lista.

Qual método devo usar para carregar um arquivo CSV em C#?

Para carregar um arquivo CSV em C#, utilize o método WorkBook.LoadCSV da biblioteca IronXL, que recebe o caminho do arquivo como parâmetro.

Como posso definir uma estrutura de dados que corresponda ao conteúdo de um arquivo CSV?

Defina uma classe, como uma classe 'Pessoa', com propriedades que correspondam às colunas do seu arquivo CSV. Isso ajuda a estruturar os dados recuperados do CSV em um formato orientado a objetos.

Que técnica pode ser usada para ignorar a linha de cabeçalho em um arquivo CSV?

Para ignorar a linha de cabeçalho, implemente um indicador booleano para verificar se a linha é a primeira e, em caso afirmativo, ignore-a, continuando para a próxima iteração.

Como posso lidar com linhas vazias ao analisar um arquivo CSV em C#?

Utilize as propriedades de linha da biblioteca IronXL, como IsEmpty , para verificar se há linhas vazias e ignorá-las durante o processo de análise.

Qual a importância de lidar com diferentes tipos de dados ao processar arquivos CSV?

O tratamento correto de diferentes tipos de dados garante que os dados sejam processados com precisão e evita erros de incompatibilidade de tipos, especialmente ao lidar com campos numéricos ou de data.

Quais são alguns dos desafios comuns associados ao processamento de arquivos CSV?

Os desafios comuns incluem lidar com vários tipos de dados, ignorar linhas vazias ou malformadas e garantir a análise e o processamento precisos dos dados, sem erros.

Quais são as vantagens de usar uma biblioteca para processamento de arquivos CSV em C#?

Utilizar a biblioteca IronXL para processamento de CSV em C# simplifica o carregamento e a análise de arquivos CSV com seus métodos intuitivos, permitindo que os desenvolvedores manipulem os dados de forma eficiente.

Quais são os passos que devo seguir para configurar um projeto C# para leitura de arquivos CSV?

Comece criando um projeto de console C# no Visual Studio, instale a biblioteca IronXL usando o Gerenciador de Pacotes NuGet e use o método WorkBook.LoadCSV para carregar e analisar arquivos CSV em uma lista.

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