none
Ajuda exportar txt largura fixa vba RRS feed

  • Pergunta

  • Boa tarde pessoal, sou relativamente novo no Fórum já tirei algumas dúvidas e gostaria de agradecer a todos vocês.

    Estou com um problema ao exportar uma tabela para TXT, com layout definido onde migrarei para outro sistema. Já fiz várias formatações e o único problema que me falta resolver é que não consigo exportar com largura fixa um campo que não tenha dados, por exemplo:

    Tenho uma tabela em que o campo data não é obrigatório, logo em alguns registros este campo estará em branco e é justamente ai que causa a distorção no meu TXT. Ao exportar obtenho o seguinte resultado:

    Data             DataBaixa     CodUnidade    CodOrgao 

    ]Resultado Obtido:
     
    01102013       29102013           6                 7
    01102013       16102013           5                 7
    01102013       6                 7
    05102013       13102013           6                 7  
    01102013       6                 7
    01102013       16102013           5                 7

    Resultado esperado:

    01102013       29102013           6                 7
    01102013       16102013           5                 7
    01102013     ----------------         6                 7
    05102013       13102013           6                 7 
    01102013     ---------------          6                 7
    01102013       16102013           5                 7

    Conto com a colaboração de todos e espero poder resolver esse probleminha aqui.
    terça-feira, 29 de outubro de 2013 22:09

Respostas

  • Eu acho que é mais ou meso assim:

    o código seria mais ou menos assim para a geração

    StreamWriter str = new StreamWriter(".\\txt.txt", true);
    str.WriteLine(string.Format("{0}{1}{2}{3}", Data.PadLeft(8, ' '), DataBaixa.PadLeft(12, ' '), CodigoUnidade.PadLeft(12, ' '), CodigoOrgao.PadLeft(12, ' ')));
    str.WriteLine(string.Format("{0}{1}{2}{3}", Data.PadLeft(8, ' '), "".PadLeft(12, ' '), CodigoUnidade.PadLeft(12, ' '), CodigoOrgao.PadLeft(12, ' ')));
    str.Flush();
    str.Close();

    ou seja, o PadLeft vai te jogar espaço ou qualquer outra caractere de sua escolha aonde não tem nada

    Percebe que o primeiro é 8 que é a primeira data e o segundo foi 12 e assim por diante!

    Acredito que vai te resolver!

    Se sim credite ai os pontos e agradeço...


    Fúlvio Cezar Canducci Dias

    quarta-feira, 30 de outubro de 2013 02:34

Todas as Respostas

  • Eu acho que é mais ou meso assim:

    o código seria mais ou menos assim para a geração

    StreamWriter str = new StreamWriter(".\\txt.txt", true);
    str.WriteLine(string.Format("{0}{1}{2}{3}", Data.PadLeft(8, ' '), DataBaixa.PadLeft(12, ' '), CodigoUnidade.PadLeft(12, ' '), CodigoOrgao.PadLeft(12, ' ')));
    str.WriteLine(string.Format("{0}{1}{2}{3}", Data.PadLeft(8, ' '), "".PadLeft(12, ' '), CodigoUnidade.PadLeft(12, ' '), CodigoOrgao.PadLeft(12, ' ')));
    str.Flush();
    str.Close();

    ou seja, o PadLeft vai te jogar espaço ou qualquer outra caractere de sua escolha aonde não tem nada

    Percebe que o primeiro é 8 que é a primeira data e o segundo foi 12 e assim por diante!

    Acredito que vai te resolver!

    Se sim credite ai os pontos e agradeço...


    Fúlvio Cezar Canducci Dias

    quarta-feira, 30 de outubro de 2013 02:34
  • Obrigado Flávio, estarei verificando aqui e volto para confirmar.
    quarta-feira, 30 de outubro de 2013 04:15
  • Obrigado Flávio, estarei verificando aqui e volto para confirmar.
    Vlw, só lembrando meu nome é Fúlvio!!! ok kkkk

    Fúlvio Cezar Canducci Dias

    quarta-feira, 30 de outubro de 2013 11:48
  • Oi Fúlvio, desculpa por ter confundido, srsrsrsr
    Obrigado por me ajudar, foi isso ai mesmo.. fico muito grato, um grande abraço.
    quarta-feira, 30 de outubro de 2013 19:09