Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Como abrir ficheiros de texto delimitados CSV em VB.NET

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Como abrir ficheiros de texto delimitados CSV em VB.NET



    Como abrir ficheiros de texto delimitados CSV em VB.NET
    Com a facilidade do banco de dados, os ficheiros de texto são cada vez menos utilizados, mas em algumas coisas eles ainda estão ativos, como para criação de ficheiros de log, e ficheiros CSV (Comma-Separated Values). Para ler estes ficheiros, existem várias formas, umas mais complicadas, outras mais simples. Agora se o ficheiro for uma lista, o processo se torna ainda mais fácil, rápido e simples, utilizando uma ligação Microsoft Jet OLE DB 4.0.

    Vamos ao exemplo:

    Primeiro, o nosso arquivo se chamará dados.csv, e terá o conteúdo:

    1;Amarelo;22:09 11-06-2010
    2;Azul;22:10 12-06-2010
    3;Verde;22:11 12-06-2010
    4;Verde;22:12 13-06-2010
    5;Preto;22:13 14-06-2010
    6;Branco;22:14 14-06-2010


    Como isto, podemos ler o ficheiro com o código abaixo:

    Código HTML:
    Sub Main()
      ' ConnectionString para ligação com Microsoft Jet OLEDB
      Dim connString As String =
          "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\;" &
          "Extended Properties='text;HDR=no;FMT=Delimited'"
    
      Dim SQL As String = "SELECT * FROM dados.csv"
      Using da As New OleDb.OleDbDataAdapter(SQL, connString)
          Dim ds As New DataSet
          da.Fill(ds)
    
          ' Informação disponível no DataSet
          For Each oRow As DataRow In ds.Tables(0).Rows
              Console.WriteLine(oRow(0).ToString() & " " & oRow(1).ToString() & " " & oRow(2).ToString())
          Next
    
     End Using
    End Sub

    Desta forma colocamos toda a informação num DataSet. Neste exemplo, a DataTable terá 6 linhas (rows) e três colunas (columns), onde as colunas terão o nome, gerado automaticamente, de “F1”, “F2” e “F3”.

    Com isto podemos filtrar os dados:

    Código HTML:
    Sub Main()
        ' ConnectionString para ligação com Microsoft Jet OLEDB
        Dim connString As String =
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\;" &
            "Extended Properties='text;HDR=no;FMT=Delimited'"
    
        Dim SQL As String = "SELECT * FROM dados.csv"
        Using da As New OleDb.OleDbDataAdapter(SQL, connString)
            Dim ds As New DataSet
            da.Fill(ds)
    
            Dim view As DataView = ds.Tables(0).DefaultView
            view.RowFilter = "F2 = 'Verde'"
    
            ' Mostra o número das linhas que têm o
            ' valor “Verde” na segunda coluna
            For x As Integer = 0 To view.Count - 1
                Console.WriteLine(view(x).Row.Item(0).ToString)
            Next
            Console.Read()
    
        End Using
    End Sub
    Agora imagine que o nosso ficheiro possui um delimitador diferente, como a barra (|):

    1|Amarelo|22:09 11-06-2010
    2|Azul|22:10 12-06-2010
    3|Verde|22:11 12-06-2010
    4|Verde|22:12 13-06-2010
    5|Preto|22:13 14-06-2010
    6|Branco|22:14 14-06-2010


    Se executarmos o código acima ele não irá funcionar. Como solução podemos utilizar um ficheiro schema, como o nome de schema.ini, que seria colocar no mesmo diretório do ficheiro que estamos tentando ler. Este ficheiro forme o IISAM com informações sobre o formato dos dados, o nome da coluna e informações sobre o tipo de dados, e várias outras características, permitindo também definir qual é o delimitador.

    A estrutura simplificada seria a seguinte:

    [nome do ficheiro]
    Format=Delimited(delimitador)
    ColNameHeader=True ou False


    Para o nosso exemplo, ficaria assim:

    [dados.csv]
    Format=Delimited(|)
    ColNameHeader=False


    Desta forma podemos ler o ficheiro, utilizando qualquer delimitador e definindo ainda algumas informações adicionais.

    Fonte: VBTuga
X
Working...
X