ResultSet não grava resultado no arquivo Excel

1 resposta
exceljava
bruno_i25

ResultSet trás resultado correto mas ao gravar no Excel as células não são preechidas.

Row row;
        Cell cell = null;      
        row = sheet2.createRow(0);
        row.createCell(0).setCellValue("Mês");
        row.createCell(1).setCellValue("Total");
        row.createCell(3).setCellValue("Mês");
        row.createCell(4).setCellValue("Kaizens");
       
        while (rsTot.next()) {
            row = sheet2.createRow(rsTot.getRow());
            cell = row.createCell(0);
            cell.setCellValue(rsTot.getString("mes"));
            cell = row.createCell(1);
            cell.setCellValue(rsTot.getString("qtd"));
        }

        while (rsKai.next()) {
            row = sheet2.createRow(rsKai.getRow());
            cell = row.createCell(3);
            cell.setCellValue(rsKai.getString("mes"));
            cell = row.createCell(4);
            cell.setCellValue(rsKai.getString("qtd"));
        }

O primeiro ResultSet é ignorado.O que pode ser?

image

1 Resposta

darlan_machado

Falando de modo grosseiro, você está fazendo uma aberração.
O ResultSet não deve, nunca, sair do método onde você lê os dados do banco.
Prefira, antes, criar uma classe que represente os dados que quer passar do teu DAO (creio que esteja usando esta abordagem) e, então, devolva um objeto desta classe (ou uma lista contendo objetos dessa classe).

Mais ou menos assim

//Model ou POJO
public class Foo {
    private Long id;
    private String nome;
    //Demais atributos, métodos, getters e setters, etc
}

E, no DAO

//DAO
public class QualquerDAO{
    public List<Foo> listarFoo() throws Exception {
        List<Foo> lista = new ArrayList<>();
        //Faz muita coisa antes
        ResultSet rs = pstm.getResultSet();
        while(rs.next()) {
            Foo f = new Foo();
            f.setId(rs.getLong("id"));
            f.setNome(rs.getString("nome"));
            //Lê o que mais precisa
           lista.add(f);
        }
        return lista;
   }
}

E, na tua classe onde vai usar os dados

//E no teu controller ou service ou na classe que precisa
QualquerDAO qlqDAO = new QualquerDAO();
List<Foo> foos = qlqDAO.listarFoo();

Entendeu?
Com isso, você tem mais flexibilidade e controle dos dados. Entenda, não é que não funcione da maneira que está tentando, mas, é estranho, fora do comum e difícil de manter.

Criado 22 de janeiro de 2018
Ultima resposta 22 de jan. de 2018
Respostas 1
Participantes 2