VB .NET - Lendo um arquivo CSV para um array
Neste artigo vou mostrar como ler o conteúdo de um arquivo CSV para um array usando a linguagem VB .NET. |
Para começar vamos rever o que vem a ser esse tal de CSV ...
Comma-separated values (ou CSV) é um formato de arquivo que armazena dados tabelados, cujo grande uso data da época dos mainframes. Por serem bastante simples, arquivos .csv são comuns em todas as plataformas de computador.
O CSV é um implementação particular de arquivo texto separados por um delimitador, que usa a vírgula e a quebra de linha para separar os valores. O formato também usa as aspas em campos no qual são usados os caracteres reservados (vírgula e quebra de linha). Essa robustez no formato torna o CSV mais amplo que outros formatos digitais do mesmo segmento.(http://pt.wikipedia.org/wiki/Comma-separated_values)
Exemplo de um arquivo CSV:
Arquivo Agenda de contatos
1979, Macoratti, São Paulo, SP. 125500
1980, Jose Carlos, Rio De Janeiro, RJ, 210125
1992, Ana Maria, Marilia, SP , 134525
2000, Janice , Parana, PR, 789452
Pois bem , nosso trabalho será ler o conteúdo de um arquivo CSV para um array e exibir o resultado em um DataGridView.
Recursos Usados :
Criando o projeto Windows Forms
Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual Basic e o template Windows Classic Desktop ->Windows Forms Application(.NET Framework)
Informe um nome a seu gosto. Eu vou usar o nome vbn_csvArray
A seguir inclua os seguintes controles no formulário form1.vb a partir da ToolBox:
TextBox - txtArquivo
1 DataGridView - gdvDados
1 Button - btnAbrir
Disponha os controles conforme mostra a imagem da figura abaixo:
Implementando o código no formulário
Vamos agora definir o código no formulário Form1.vb começando com a declaração dos namespaces:
Imports System.IO
No evento Load do formulário digite o código a seguir:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtArquivo.Text = Path.GetFullPath(Path.Combine(Application.StartupPath, "..\..")) + "\Dados.csv"
txtArquivo.Select(0, 0)
End Sub
|
Este código vai montar o caminho com nome do arquivo Dados.csv que esta na raiz do projeto e exibí-lo na caixa de texto.
No evento Click do Botão Abrir defina o código a seguir:
Private Sub btnAbrir_Click(sender As Object, e As EventArgs) Handles btnAbrir.Click
' Obtem os dados do arquivo CSV
Dim values As String(,) = CarregarCsv(txtArquivo.Text)
Dim numero_linhas As Integer = values.GetUpperBound(0) + 1
Dim numero_colunas As Integer = values.GetUpperBound(1) + 1
' Exibe os dados
' Cria o cabeçalho
' Para o exemplo assumimos que a primeira linha
' contém os nomes dad colunas
gdvDados.Columns.Clear()
For coluna As Integer = 0 To numero_colunas - 1
gdvDados.Columns.Add(values(0, coluna), values(0, coluna))
Next
' Adiciona os dados no datagridview
For linha As Integer = 1 To numero_linhas - 1
gdvDados.Rows.Add()
For coluna As Integer = 0 To numero_colunas - 1
gdvDados.Rows(linha - 1).Cells(coluna).Value = values(linha, coluna)
Next
Next
'Torna todas as colunhas autosize.
For Each coluna As DataGridViewColumn In gdvDados.Columns
coluna.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
Next
End Sub
|
Neste código lemos o arquivo CSV chamando o método CarregarCSV() e exibimos o conteúdo no DataGridView.
Agora crie o método CarregarCSV usando o seguinte código :
Private Function CarregarCsv(nomeArquivo As String) As String(,)
' Obtem o texto do arquivo
Dim arquivoCSV As String = File.ReadAllText(nomeArquivo)
' Obtém cada linha do arquivo
arquivoCSV = arquivoCSV.Replace(ControlChars.Lf, ControlChars.Cr)
Dim linhas As String() = arquivoCSV.Split(New Char() {ControlChars.Cr}, StringSplitOptions.RemoveEmptyEntries)
' Ve quantas linhas e colunas existem
Dim numeroLinhas As Integer = linhas.Length
Dim numeroColunas As Integer = linhas(0).Split(","c).Length
' Aloca dados no array
Dim valores As String(,) = New String(numeroLinhas - 1, numeroColunas - 1) {}
' Carrega o array
For vetor As Integer = 0 To numeroLinhas - 1
Dim linha_vetor As String() = linhas(vetor).Split(","c)
For c As Integer = 0 To numeroColunas - 1
valores(vetor, c) = linha_vetor(c)
Next
Next
' Retorna os valores
Return valores
End Function
|
Executando o projeto iremos obter o resultado abaixo:
Pegue o código do projeto aqui : vbn_csvArray.zip
Está alguém entre vós aflito? Ore. Está alguém contente? Cante louvores. Tiago 5:13
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Lendo arquivos delimitados - CSV - Usando ... - Macoratti
VB 2005 - DataGridView interagindo com arquivos CSV - Macoratti