none
Leitura de Arquivo do tipo CSV RRS feed

  • 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.ShowDialog

    E 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?

    terça-feira, 30 de junho de 2015 14:08

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


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 1 de julho de 2015 12:05

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

    terça-feira, 30 de junho de 2015 17:26
  • 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 Using

    Eu 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?


    terça-feira, 30 de junho de 2015 18:58
  • vc vai ler um arquivo csv e gravar o que vc quer em outro arquivo é isso ? ou vc vai gravar os dados em um banco de dados ?

    Junior

    terça-feira, 30 de junho de 2015 19:08
  • O que eu gostaria é de ler o arquivo CSV, armazenar temporariamente no LOGFILE para que eu possa usar este LOGFILE para montar um report, por exemplo. Só que tudo em sequência, ou seja, não preciso ter o LOGFILE armazenado em disco.
    terça-feira, 30 de junho de 2015 20:28
  • 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


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 1 de julho de 2015 12:05
  • Olá. Depois de um longo tempo afastado voltei.

    Nesta sua sugestão, ele apresenta o erro " 'Add' is not a member of 'TextFieldParser' "

    terça-feira, 5 de janeiro de 2016 18:04