O post que segue é uma forma padrão de se fazer uma chamada para relatórios do tipo Jasper Reports dentro do framework ZK utilizando o Java. A sacada para uma chamada de Jasper é seguir todos os passos e sempre enviar um objeto para ser aberto dentro do relatório. Objeto vazio não permite a abertura do relatório. O objeto com o conteúdo do relatório pode ser enviado dentro de uma lista. Dentro dessa lista é possível enviar outras listas com o conteúdo de subrelatorios. Ao invés de mandar um objeto também é possível enviar uma conexão e criar o SQL dentro do Jasper. Outra sacada é na configuração, as libs do projeto em Java devem conter a mesma versão do jar utilizado no iReport. Outros exemplos podem ser retirados de dentro do fórum do ZK.
RelatorialComposer.java
relatorial.zul
Outra fonte boa para relatório usando envio de conexão em Java.
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm
Utilizando PHP
http://cachina.wordpress.com/2010/01/29/usando-o-ireport-como-gerador-de-relatorios-para-php/
Libs Jasper Reports
http://sourceforge.net/projects/jasperreports/files/jasperreports/
RelatorialComposer.java
- import java.io.File;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import model.Chaves;
- import net.sf.jasperreports.engine.JRDataSource;
- import net.sf.jasperreports.engine.JRException;
- import net.sf.jasperreports.engine.JasperExportManager;
- import net.sf.jasperreports.engine.JasperFillManager;
- import net.sf.jasperreports.engine.JasperPrint;
- import net.sf.jasperreports.engine.JasperReport;
- import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
- import net.sf.jasperreports.engine.util.JRLoader;
- import net.sf.jasperreports.view.JasperViewer;
- import org.zkoss.util.media.AMedia;
- import org.zkoss.zk.ui.Component;
- import org.zkoss.zk.ui.Executions;
- import org.zkoss.zk.ui.WrongValueException;
- import org.zkoss.zk.ui.util.GenericForwardComposer;
- import org.zkoss.zul.Filedownload;
- import org.zkoss.zul.Iframe;
- import org.zkoss.zul.Label;
- import org.zkoss.zul.Timebox;
- import org.zkoss.zul.Window;
- public class RelatorialComposer extends GenericForwardComposer {
- Window calendarWin;
- Calendar calendarioInicio;
- Calendar calendarioFim;
- Label msgInicio;
- Label msgFim;
- Label lblDtInicio;
- Label lblDtFim;
- List<String> reportObject;
- public static final SimpleDateFormat dateHourFormat = new SimpleDateFormat(
- "HH:mm");
- public static final SimpleDateFormat dateAndHourFormat = new SimpleDateFormat(
- "dd/MM/yyyy HH:mm");
- private Timebox hrSunInitS1;
- private Timebox hrSunFinalS1;
- private Iframe report;
- List<Chaves>listChaves;
- Chaves chaves = new Chaves();
- Chaves chavesDois = new Chaves();
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- @Override
- public void doAfterCompose(Component comp) throws Exception {
- // TODO Auto-generated method stub
- super.doAfterCompose(comp);
- }
- public void onClick$createReport() throws JRException {
- // validaData();
- listChaves=new ArrayList<Chaves>();
- // Objeto do dataset
- for (int i = 1; i < 10; i++) {
- chaves.setChave0(i);
- chaves.setChave1(i);
- chaves.setChave2(i);
- chaves.setChave3(i);
- chaves.setChave4(i);
- chaves.setChave5(i);
- chavesDois.setChave0(i);
- chavesDois.setChave1(i);
- chavesDois.setChave2(i);
- chavesDois.setChave3(i);
- chavesDois.setChave4(i);
- chavesDois.setChave5(i);
- listChaves.add(chaves);
- listChaves.add(chavesDois);
- }
- String sourceFileName = "reports/reportTra.jasper";
- String reportSrc = Executions.getCurrent().getDesktop().getWebApp().getRealPath(sourceFileName);
- // Cria o DataSource
- JRBeanCollectionDataSource jrb = new JRBeanCollectionDataSource(listChaves);
- File reportFile = new File(reportSrc);
- JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(reportFile);
- // Parametros fixo de relatorio
- Map<String, Object> parameters = new HashMap<String, Object>();
- parameters.put("tituloRelat", "Relatório por Intervalo Diário");
- JasperPrint print = JasperFillManager.fillReport(relatorioJasper, parameters, jrb);
- final AMedia amedia = new AMedia("reportManagementKey.pdf", "pdf","application/pdf", JasperExportManager.exportReportToPdf(print));
- //report.setContent(amedia);
- if(amedia != null){
- Filedownload.save(amedia);
- }
- }
- }
relatorial.zul
- <?page title="" contentType="text/html;charset=UTF-8"?>
- <zk>
- <window id="calendarWin" title="Relatório Mensal" border="normal" position="middle" width="100%" apply="composition.RelatorialComposer" closable="true">
- <grid id="gridHoliday" style="border:none">
- <columns>
- <column align="right"/>
- <column align="left"/>
- </columns>
- <rows>
- <row>
- <label value="Relatório:" />
- <button label="Gerar Relatório" id="createReport" />
- </row>
- </rows>
- </grid>
- <hlayout>
- <iframe id="report" />
- </hlayout>
- </window>
- </zk>
Outra fonte boa para relatório usando envio de conexão em Java.
http://www.dsc.ufcg.edu.br/~jacques/cursos/daca/html/documentviews/relatorios.htm
Utilizando PHP
http://cachina.wordpress.com/2010/01/29/usando-o-ireport-como-gerador-de-relatorios-para-php/
Libs Jasper Reports
http://sourceforge.net/projects/jasperreports/files/jasperreports/
Nenhum comentário:
Postar um comentário