Gerar arquivo .txt com tres colunas

1 resposta
sinkz

Tenho um sistema onde faço algumas pesquisas no banco e armazeno tudo em um Array,
porém tenho que montar um layout com esses dados paras que eles possam
ser impressos como etiquetas em uma impressora matricial.

A parte das linhas eu já formatei, porém não sei como fazer para que o
próximo registro da lista ao invés de ir pra próxima linha vire uma
coluna.

Eu preciso deixar dessa forma:

O que eu consigo obter atualmente é isso:

Nesse caso minha consulta retornou apenas dois resultados, o certo
seria colocar essa segunda linha em uma coluna como na primeira imagem.

Essa é minha classe que gera o txt:

public static void gerarTxt(List<Contrato> lista) {

        try {
            FileWriter arq = new FileWriter("C:\\etiqueta.txt");
            PrintWriter gravarArq = new PrintWriter(arq);
            for (Contrato item : lista) {
                gravarArq.print(item.getContrato());
                gravarArq.print("\r\n");
                gravarArq.print(item.getContratante());
                gravarArq.print("\r\n");
                gravarArq.print(item.getRua().trim()+", "+item.getNumero());
                gravarArq.print("\r\n");
                gravarArq.print(item.getBairro());
                gravarArq.print("\r\n");
                gravarArq.print(item.getCep() + " "+item.getCidade()+ " "+StringUtils.leftPad(item.getUf(), 22));
                gravarArq.print("\r\n");
                gravarArq.print(".");
                gravarArq.print("\r\n");
            }
            arq.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Como posso transformar essas linhas em colunas?

1 Resposta

sergiolopes

Formatozinho ingrato esse seu hein hehehe. Vai dar um trabalho mesmo.

Pergunta: vc sabe o tamanho máximo dos dados de cada contato? Nome por exemplo, tem um máximo? Pq pra deixar alinhadinho assim vc vai precisar disso. Se não souber, vai ter que percorrer a lista antes pra achar o tamanho máximo e calcular a partir daí.

De modo geral, o que vc vai precisar é percorrer os contatos de 3 em 3. Aí vc vai imprimir os 3 números de contrato por exemplo na mesma linha, preenchendo com espaços no meio. O número de espaços depende do tamanho máximo da linha (máximo - contrato.length). Aí faz isso pra cada linha como vc já fez, só que sempre imprimindo 3 contatos por linha.

Criado 31 de dezembro de 2015
Ultima resposta 31 de dez. de 2015
Respostas 1
Participantes 2