Gráfico excel grava apenas o ultimo registro do ResultSet

Estou tentando gerar um gráfico Excel porém ao trazer os resultados e inseri-los nas celulas são trazidos apenas os últimos resultados. O que pode ser? Este é o trecho do código:

public static void BarChartMensal(HttpServletResponse response, HttpServletRequest request, String s5s, String kai, String tot, String titulo) throws FileNotFoundException, IOException, ClassNotFoundException, SQLException {
 
        Connection con = new Conexao().getConnection("qualidade");
        Integer last1, last2, last3 = 0;
        int larguraGrafico = 0;
        PreparedStatement stKai, st5s, stTot = null;
        ResultSet rsKai, rs5s, rsTot = null;
        stKai = con.prepareStatement(kai);
        st5s = con.prepareStatement(s5s);
        stTot = con.prepareStatement(tot);
 
        rsKai = stKai.executeQuery();
        rs5s = st5s.executeQuery();
        rsTot = stTot.executeQuery();
 
        rsKai.last();
        rs5s.last();
        rsTot.last();
        last1 = rsKai.getRow();
        last2 = rs5s.getRow();
        last3 = rsTot.getRow();
        rsKai.beforeFirst();
        rs5s.beforeFirst();
        rsTot.beforeFirst();
 
        if (last1 > 0 && last2 > 0 && last3 > 0) {
 
            response.setContentType("application/xls ");
            response.setHeader("Content-disposition", "attachment; filename=GraficoKaizen.xlsx");
            ServletOutputStream outputStream = response.getOutputStream();
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet("Grafico"); //camada 1
            Sheet sheet2 = wb.createSheet("Detalhes"); //camada 2
 
            Row row;
            Cell cell = null;
            CellStyle style = wb.createCellStyle();
            style.setFillBackgroundColor(IndexedColors.LIGHT_YELLOW.getIndex());

 
            row = sheet2.createRow(0);//1ª linha meses
            row.createCell(0);
            while (rsTot.next()) {
                int i = 1;
                cell = row.createCell(i);
                cell.setCellValue(rsTot.getString("mes"));
                i++;
                System.out.println("Mes=" + rsTot.getString("mes"));
            }
            rsTot.close();
             
            row = sheet2.createRow(1); //2ªlinha kaizens
            row.createCell(0).setCellValue("Kaizen");
            while (rsKai.next()) {
                int i = 1;
                cell = row.createCell(i);
                cell.setCellValue(rsKai.getString("qtd"));
                i++;
                System.out.println("Kaizen qtd=" + rsKai.getString("qtd"));
            }
            rsKai.close();
 
            row = sheet2.createRow(2); //3ªlinha 5s
            row.createCell(0).setCellValue("5S");
            while (rs5s.next()) {
                int i = 1;
                cell = row.createCell(i);
                cell.setCellValue(rs5s.getString("qtd"));
                i++;
                System.out.println("5S qtd=" + rs5s.getString("qtd"));
            }
            rs5s.close();
 } else {
            con.close();
            ss.setAttribute("S_ERRO", "Erro ao gerar gráfico, seleção de busca sem resultado no banco de dados!");
            response.sendRedirect("grafico-kaizen.jsp");
        }
    }

Este é o resultado do Log:

Mes=1
Mes=2
Mes=3
Mes=4
Mes=5
Mes=6
Mes=7
Mes=8
Mes=12


Kaizen qtd=4
Kaizen qtd=3
Kaizen qtd=9
Kaizen qtd=9
Kaizen qtd=5
Kaizen qtd=3
Kaizen qtd=7
Kaizen qtd=1
Kaizen qtd=1


5S qtd=2
5S qtd=2
5S qtd=1
5S qtd=5
5S qtd=2
5S qtd=4
5S qtd=6

O que é gerado no gráfico:
image

Estás sempre a criar a célula 1.

Só que eu incremento o i no final do while com
i++;

Você deve atribuir o valor 1 para a variável fora do laço!
Depois incrementa-la dentro do laço, pois da forma que está toda vez que o laço se repete o valor da linha se inicia em 1, desta forma ele nunca vai ser atualizado!

Exemplo:

int i = 1;
    while (rs5s.next()) {
        cell = row.createCell(i);
        cell.setCellValue(rs5s.getString("qtd"));
        i++;
        System.out.println("5S qtd=" + rs5s.getString("qtd"));
    }
1 curtida