none
Como Ler Arquivos Textos no Vb.net RRS feed

  • Pergunta

  • Preciso de duas soluções:
    1 - Preciso ler um arquivo texto, e preencher um dataTable, o arquivo está assim:

    |CódCliente|Nome|Sobrenome|RG|CPF|
    |012|Lúcia|Alves|00125|1245678912|

    a primeira linha é a coluna dos dados, que estão a partir da segunda linha no arquivo, o que quero é ler a primeira linha e colocá-las como coluna no dataTable e preencher o dataTable com o restante das linhas do arquivo dividir as colunas na mesma divisão do arquivo .txt que é o caracter "|" como mostro no exemplo acima.

    2 - Na segunda solução é igual a primeira preciso ler um arquivo .txt que só tem os dados divididos com o caracter "|" sem as colunas, ou seja, a primeira linha do arquivo  em diante já é os dados, o arquivo neste caso não tem colunas na primeira linha. como o exemplo abaixo:

    |011|Mara|Silva|1234|56465646464|
    |012|Lúcia|Alves|00125|1245678912|
    sexta-feira, 6 de fevereiro de 2009 19:29

Respostas

  • Fala Marks, blz??

    Cara, fiz um código para te auxiliar utilizando array, neste caso, vc precisaria substituir pelo seu arquivo texto.. blz...
    segue exemplo.

    private void LeituraArquivo(bool leHeader)

    {

    string[] str = new string[3];

    DataTable dt = new DataTable();

    DataColumn dc;

    DataRow dr;

    byte indice = 0;

    str[0] = "CodCliente|Nome|Sobrenome|RG|CPF";

    str[1] = "012|L£cia|Alves|00125|1245678912";

    str[2] = "013|LELE|M|00125|1245678912";

    string[] result;

    char[] splitter = { '|' };

    result = str[0].Split(splitter, 5);

    if (leHeader == true)

    {

    //COLUNAS

    for (int i = 0; i < result.Length; i++)

    {

    dc = new DataColumn(result[i]);

    dt.Columns.Add(dc);

    }

    indice = 1;

    }

    //LINHAS

    for (int i = indice; i < str.Length; i++)

    {

    result = str[i].Split(splitter, 5);

    dr = dt.NewRow();

    for (int j = 0; j < result.Length; j++)

    {

    dr[j] = result[j];

    }

    dt.Rows.Add(dr);

    }

    }

    Abraços...

    segunda-feira, 9 de fevereiro de 2009 11:21
  • Olá Markes,

    Uma forma muito simples de ler esse arquivo texto é utilizar o framework FileHelpers, onde você só precisa mapear as definições desse arquivo para uma classe, informando que o delimitador de registros é o caracter "|", e depois utilizar o "motor" que faz a leitura de arquivos delimitados.

    Valer à pena experimentar:

    FileHelpers
    http://filehelpers.sourceforge.net/


    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    segunda-feira, 9 de fevereiro de 2009 18:33
    Moderador

Todas as Respostas

  • Fala Marks, blz??

    Cara, fiz um código para te auxiliar utilizando array, neste caso, vc precisaria substituir pelo seu arquivo texto.. blz...
    segue exemplo.

    private void LeituraArquivo(bool leHeader)

    {

    string[] str = new string[3];

    DataTable dt = new DataTable();

    DataColumn dc;

    DataRow dr;

    byte indice = 0;

    str[0] = "CodCliente|Nome|Sobrenome|RG|CPF";

    str[1] = "012|L£cia|Alves|00125|1245678912";

    str[2] = "013|LELE|M|00125|1245678912";

    string[] result;

    char[] splitter = { '|' };

    result = str[0].Split(splitter, 5);

    if (leHeader == true)

    {

    //COLUNAS

    for (int i = 0; i < result.Length; i++)

    {

    dc = new DataColumn(result[i]);

    dt.Columns.Add(dc);

    }

    indice = 1;

    }

    //LINHAS

    for (int i = indice; i < str.Length; i++)

    {

    result = str[i].Split(splitter, 5);

    dr = dt.NewRow();

    for (int j = 0; j < result.Length; j++)

    {

    dr[j] = result[j];

    }

    dt.Rows.Add(dr);

    }

    }

    Abraços...

    segunda-feira, 9 de fevereiro de 2009 11:21
  • Olá Markes,

    Uma forma muito simples de ler esse arquivo texto é utilizar o framework FileHelpers, onde você só precisa mapear as definições desse arquivo para uma classe, informando que o delimitador de registros é o caracter "|", e depois utilizar o "motor" que faz a leitura de arquivos delimitados.

    Valer à pena experimentar:

    FileHelpers
    http://filehelpers.sourceforge.net/


    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    segunda-feira, 9 de fevereiro de 2009 18:33
    Moderador
  • o seu código é bom mas está c#, tem jeito de vc faze em VB.net? para mim é melhor!

    em relação as linhas que estão no arquivo e o array que vc montou,

    é que eu não sei quantas linhas o arquivo vai ter, e não sei o conteúdo, no arquivo texto vai ter várias linhas mas de acordo com o exemplo que dei.
    Eu preciso ler e retornar todas as linhas do arquivo,

    não dá pra saber quantas linhas vai ter o arquivo (só se contar antes de ler, fazer isso no código)
    depois de contar as linhas aí posso indicar nessa string que vc montou.
    string[] str = new string[3];

    não posso especificar cada linha na variável str que vc colocou no código.
    str[0] = "CodCliente|Nome|Sobrenome|RG|CPF";
    str[1] =
    "012|L£cia|Alves|00125|1245678912";
    str[2] =
    "013|LELE|M|00125|1245678912";

    se puder montar em Vb.net, para me ajudar eu agradeço


    terça-feira, 10 de fevereiro de 2009 13:23
  • o framework FileHelpers que vc citou é Gratuíto para utilizar comercialmente?
    terça-feira, 10 de fevereiro de 2009 13:25
  • Olá Markes,

    Sim, o FileHelpers é gratuito tanto para uso comercial quanto não-comercial.

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    terça-feira, 10 de fevereiro de 2009 14:18
    Moderador
  •  gostaria que fizesse este código em Vb.net, para que eu possa compreendê-lo e utilizado. Obrigado...
    quarta-feira, 11 de fevereiro de 2009 12:57
  • Marks,

    A idéia do arquivo texto é a mesma do array, quando vc infere o arquivo em um streamreader, vc tem o método readline que percorre as linhas do texto.

    estou um pouco atarefado aqui no trampo.. mas, assim que tiver um tempo eu altero o código para VB.NET.

    Abraços...

    quinta-feira, 12 de fevereiro de 2009 10:46