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: