IMPORTAR ARQUIVO CSV PARA TABELA VIA CODIGO VB2008

EDINICIANTE 11/04/2013 11:09:45
#421787
bom dia a todos,

Sou iniciante em programação vb 2008.

Estou precisando ler um arquivo texto e colocá-lo em formato tabela, exibindo os dados num datagrid..

Alguém poderia me ajudar?

atenciosamente,
PROFESSOR 04/05/2013 18:45:10
#422957
Depende do arquivo-texto.

Por exemplo, o trecho á seguir lê dados de um arquivo de texto delimitado e cria uma lista de objetos [Ô]Sócio[Ô] com eles, usando o Visual Studio 2010:


[ô]...
Dim lista As New List(Of Sócio)
Using parser As New TextFieldParser(nomeCompletoDoArquivoTexto)
parser.CommentTokens = New String() {[Ô]#[Ô]}
parser.SetDelimiters(New String() {[Ô];[Ô]})
parser.HasFieldsEnclosedInQuotes = True
[ô] Se houver cabeçalho, saltar uma linha ...
parser.ReadLine()
While Not parser.EndOfData
Dim fields As String() = parser.ReadFields()
lista.Add(New Sócio() With
{
.Nome := fields(0),
.Endereço := fields(1),
.AnoDeCadastro := Integer.Parse(fields(2)),
.Mensalidade := Double.Parse(fields(3), (New Globalization.CultureInfo([Ô]pt-BR[Ô])))
})
End While
End Using
[ô]...


Sabendo [Ô]de véspera[Ô] quantas colunas e quais os tipos de dados, você pode criar uma função que lê os dados e retorna um DataTable, como em:


...
Private Function CSV2Tabela(ByVal arquivo As String) As DataTable
Dim ret As New DataTable
With ret
With .Columns
.Add([Ô]Nome[Ô],GetType(String))
.Add([Ô]Endereço[Ô],GetType(String))
.Add([Ô]AnoDeCadastro[Ô],GetType(Int32))
.Add([Ô]Mensalidade[Ô],GetType(Double))
End With
End With
Dim iRows As Integer
Dim iCols As Integer
Dim strarray(1, 1) As String
[ô]Verificar se o arquivo existe:
If IO.File.Exists(arquivo) Then
Dim tmp As IO.StreamReader = IO.File.OpenText(arquivo)
Dim linhas() As String
Dim linha() As String
[ô]Ler o arquivo
linhas = tmp.ReadToEnd().Split(Environment.NewLine)
[ô]Redimensionar a matriz de retorno
iRows = UBound(linhas)
linha = linhas(0).Split([Ô],[Ô])
iCols = UBound(linha)
[ô]Copiar os dados lidos na tabela
For x As Integer = 0 To iRows
linha = linhas(0).Split([Ô],[Ô])
ret.Rows.Add(linha(0), linha(1), linha(2), linha(2))
Next
End If
Return ret
End Function
...
ROBSON 05/05/2013 16:21:13
#422971

Embora o Professor já tenha lhe dado uma mãozinha,
voce colocou sua dúvida no forum errado.

Utilize o forum do VB.Net que terá maiores chances de respostas.
Faça seu login para responder