Pessoal, estou há tempos procurando uma solução para criar um relatorio que gere uma planilha excel com dados de um banco mysql.
Minha aplicação Swing tem um botão exportar dados e gostaria muito de saber como devo proceder.
Alguem tem algum exemplo?
Abraços
Afinal, qual o seu problema? Gerar um relatório ou uma planilha?
Gerar uma planilha atraves de dados do MySql
Então você deve usar a Apache POI ao invés do JasperReports.
Com o Jasper você conseguirá gerar um relatório e salvar como planilha, mas nunca fica muito bom.
O ideal é usar a POI diretamente e montar sua planilha.
Segue o link: http://poi.apache.org/
A biblioteca é bem vasta e completa, além da documentação ser bem razoável.
[]'s
OK.
Comecei a montar a planilha com o POI, mas me deparei com uma duvida.
Quando trago os dados do banco não sei como adicionar uma linha para cada dado. A unica coisa que consigo é add colunas.
Veja o codigo abaixo:
String produto = null;
int meta_turno = 0;
int total_turno = 0;
InspecaoDB db = new InspecaoDB();
ArrayList lista = new ArrayList();
lista = db.rel_volume(1, 1);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Relatorio Geral");
HSSFRow row = sheet1.createRow(0);
HSSFRow row2 = sheet1.createRow(0);
row.createCell(0).setCellValue("Produto");
row.createCell(1).setCellValue("Meta");
row.createCell(2).setCellValue("Total");
for (int i = 0; i < lista.size(); i++) {
ApontamentoVo fila = (ApontamentoVo) lista.get(i);
produto = fila.getProduto();
meta_turno = fila.getMeta_turno();
total_turno = fila.getTotal_turno();
//row.createCell((short) i).setCellValue(produto);
}
FileOutputStream stream = new FileOutputStream("c:/planilha.xls");
wb.write(stream);
Como add linha no POI?
O que está acontecendo nas linhas 10 e 11?
Traduza “row” e você entenderá.
Basta agora buscar os dados, percorrer o result set e para cada linha do resultado
inserir uma nova linha na planilha e popular com os dados.
O problema é que não sei como percorrer dentro do meu laço…
String produto = null;
int meta_turno = 0;
int total_turno = 0;
InspecaoDB db = new InspecaoDB();
ArrayList lista = new ArrayList();
lista = db.rel_volume(1, 1);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Relatorio Geral");
HSSFRow row1 = sheet1.createRow(0);
row1.createCell(0).setCellValue("Produto");
row1.createCell(1).setCellValue("Meta");
row1.createCell(2).setCellValue("Total");
for (int i = 0; i < lista.size(); i++) {
ApontamentoVo fila = (ApontamentoVo) lista.get(i);
produto = fila.getProduto();
meta_turno = fila.getMeta_turno();
total_turno = fila.getTotal_turno();
}
FileOutputStream stream = new FileOutputStream("c:/planilha.xls");
wb.write(stream);
}
Como posso fazer para criar as novas rows dentro do laço?