Ola pessoal , mais uma vez eu venho pedir a ajuda da galera mais experiente.
Meu problema é o seguinte :
Eu nunca mexi com ireport nem jasper reports ,e minha namorada pediu pra eu fazer uma aplicaçãozinha pra ela e agora estou com problemas. A aplicação consiste em ler uma planilha do excel ( estou fazendo isso utilizando Jakarta POI ) e gerar um relatorio para cada linha.O relatorio deveria ser exportado como PDF mas a principio eu quero fazer com que ao clicar nos dados de uma jtable seja carregado o relatorio correspondete em um Panel ou LayeredPane . A minha planilha só tem uma linha e 4 colunas . deixei assim para facilitar. O meu programa nao está me gerando nenhuma exception. porem tbm nao esta gerando o relatorio.
Eu estou lendo a planilha e montando um objeto Relatorio a partir dos dados da planilha, e salvando num banco de dados pra gerar o relatorio via jdbc ( Sei que tem como fazer isso direto da planilha, vou aproveitar e aprender dos dois jeitos
).
No ireport quando entro na aba preview, o relatorio é mostrado corretamente utilizando os dados cadastrados no banco.
Segue meu codigo :
RecibosBean:
public class RecibosBean {
public RecibosBean() {
}
String Nome;
double valor;
Date dataInicio;
Date dataFim;
Date dataAtual;
public String getNome() {
return Nome;
}
public void setNome(String Nome) {
this.Nome = Nome;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public Date getDataInicio() {
return dataInicio;
}
public void setDataInicio(Date dataInicio) {
this.dataInicio = dataInicio;
}
public Date getDataFim() {
return dataFim;
}
public void setDataFim(Date dataFim) {
this.dataFim = dataFim;
}
public Date getDataAtual() {
return dataAtual;
}
public void setDataAtual(Date dataAtual) {
this.dataAtual = dataAtual;
}
}
Recibos:
static public List<RecibosBean> lerCelula(File planilha) {
HSSFWorkbook wb;
HSSFSheet sheet;
List<RecibosBean> lista = new ArrayList<RecibosBean>();
try {
wb = new HSSFWorkbook(new FileInputStream(planilha));
sheet = wb.getSheetAt(0);
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
RecibosBean recibo = new RecibosBean();
HSSFRow row = sheet.getRow(i);
recibo.setNome(row.getCell(0).getStringCellValue());
recibo.setValor(row.getCell(1).getNumericCellValue());
java.util.Date datainicio = row.getCell(2).getDateCellValue();
Date data = new java.sql.Date(datainicio.getTime());
recibo.setDataInicio(data);
java.util.Date datafim = row.getCell(3).getDateCellValue();
Date data2 = new java.sql.Date(datafim.getTime());
recibo.setDataFim(data2);
java.util.Date dataatual = row.getCell(3).getDateCellValue();
Date data3 = new java.sql.Date(dataatual.getTime());
recibo.setDataAtual(data3);
lista.add(recibo);
}
return lista;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
ReportUtils:
public class ReportUtils {
public JRViewer openReport(Connection conexao) throws JRException{
InputStream stream =getClass().getResourceAsStream("/report1.jasper");
Map mapa = new HashMap();
JasperPrint print = JasperFillManager.fillReport(stream, mapa,conexao);
JRViewer view = new JRViewer(print);
return view;
}
}
Evento disparado na view :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
TableModel modelo = (TableModel) jTable1.getModel();
JFileChooser x = new JFileChooser();
x.setVisible(true);
x.showOpenDialog(null);
int op = 0;
File file;
if (op == JFileChooser.APPROVE_OPTION) {
file = x.getSelectedFile();
List<RecibosBean> lista = Recibos.lerCelula(file);
Dao dao = new Dao();
dao.adicionarLista(lista);
modelo.addListaDepedido(lista);
try {
JRViewer view = new ReportUtils().openReport( new ConnectionFactory().getConnection());
jLayeredPane3.add(view);
jLayeredPane3.repaint();
} catch (JRException ex) {
ex.printStackTrace();
}
}
}
Ps : uma duvida conceitual que tenho é se aquele HashMap de parametros é utilizado apenas caso seja necessario fazer alguma alteração na query do relatorio? No meu caso quando construi o relatorio no ireport utilizei uma query pra pegar os dados do banco. eu nao preciso fazer nenhuma modificação naquela query e nem colocar nenhum tipo de filtro. Logo aquele HashMap é desnecessario?
ps2 : a parte de leitura da planilha , gravar os dados no banco , e preencher a tabela estao funcionando. Oq estou com problemas é somente na geração do relatorio.
Muito Obrigado
Anderson =)