Usuário com melhor resposta
Leitura de Arquivo do tipo CSV

Pergunta
-
Olá a todos.
Sou novo em VB e estou fazendo uma aplicação para ler um arquivo do tipo CSV de um PD.
Eu já fiz o seguinte trecho:
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Open_PD.Click
Dim openFileDialog1 As OpenFileDialog = New OpenFileDialog
openFileDialog1.Filter = "Arquivo CSV (*.csv)|*.csv"
openFileDialog1.FilterIndex = 1
openFileDialog1.Multiselect = False
Dim UserClickedOK As Boolean = openFileDialog1.ShowDialogE ele abre uma tela e procura o arquivo (que se chama DATA.CSV), ok.
A minha dúvida é: como inserir este arquivo DATA.CSV que foi clicado em um arquivo que eu possa usar?
Respostas
-
Faltou você adicionar ao LOGFILE:
Using LOGFILE As New Microsoft.VisualBasic.FileIO.TextFieldParser(openFileDialog1.FileName) LOGFILE.TextFieldType = FileIO.FieldType.Delimited LOGFILE.SetDelimiters(",") Dim currentRow As String() While Not LOGFILE.EndOfData Try currentRow = LOGFILE.ReadFields() Dim currentField As String For Each currentField In currentRow MsgBox(currentField) 'Adiciona ao LOGFILE LOGFILE.Add(currentField) Next Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException MsgBox("A linha " & ex.Message & "não é válida e será ignorada") End Try End While End Using
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Sugerido como Resposta Mr. Morello sexta-feira, 3 de julho de 2015 17:56
- Marcado como Resposta Matheus L. M. C. Campos sexta-feira, 3 de julho de 2015 18:46
Todas as Respostas
-
Marcelo um arquivo em formato CSV nada mais é do que um arquivo onde os campos são delimitados por ; então basta vc abrir o arquivo e ler linha a linha, tem o comando split onde vc passa o que vc quer e ele separa.
public List parseCSV(string path) { List<string[]> parsedData = new List<string[]>(); string[] fields; string line = parser.ReadLine(); try { TextFieldParser parser = new TextFieldParser(@"c:\temp\test.csv"); parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(";"); while (!parser.EndOfData) { fields = parser.ReadFields(); parsedData.Add(fields); //Did more stuff here with each field. } parser.Close(); } catch (Exception e) { MessageBox.Show(e.Message); } return parsedData; }
Junior
-
Olá Júnior, boa tarde.
Tentei o procedimento abaixo:
Using LOGFILE As New Microsoft.VisualBasic.FileIO.TextFieldParser(openFileDialog1.FileName)
LOGFILE.TextFieldType = FileIO.FieldType.Delimited
LOGFILE.SetDelimiters(",")
Dim currentRow As String()
While Not LOGFILE.EndOfData
Try
currentRow = LOGFILE.ReadFields()
Dim currentField As String
For Each currentField In currentRow
MsgBox(currentField)
Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("A linha " & ex.Message & "não é válida e será ignorada")
End Try
End While
End UsingEu consigo ver que ele está lendo cada conteúdo, porque aparece uma caixa de texto (que aguarda o "OK") com cada item separado pela vírgula, então "aparentemente" está lendo o arquivo, ok?
Porém, ao acompanhar o arquivo LOGFILE, ele está sempre vazio, ou seja, não está gravando os dados que ele lê no arquivo LOGFILE .
Onde será que está o erro?
-
-
-
Faltou você adicionar ao LOGFILE:
Using LOGFILE As New Microsoft.VisualBasic.FileIO.TextFieldParser(openFileDialog1.FileName) LOGFILE.TextFieldType = FileIO.FieldType.Delimited LOGFILE.SetDelimiters(",") Dim currentRow As String() While Not LOGFILE.EndOfData Try currentRow = LOGFILE.ReadFields() Dim currentField As String For Each currentField In currentRow MsgBox(currentField) 'Adiciona ao LOGFILE LOGFILE.Add(currentField) Next Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException MsgBox("A linha " & ex.Message & "não é válida e será ignorada") End Try End While End Using
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
- Sugerido como Resposta Mr. Morello sexta-feira, 3 de julho de 2015 17:56
- Marcado como Resposta Matheus L. M. C. Campos sexta-feira, 3 de julho de 2015 18:46
-