Documente Academic
Documente Profesional
Documente Cultură
Criar o Relatrio
1. Abra um novo Relatrio
1.4 Finalizando
2. Escolha as Bands que ser necessria para montar o Relatrio. Nesse exemplo trabalharemos com as bands Title , Column Header e Detail .
Exclua todas as outra Bands que no ser necessrias (Title, Page Header , Column Footer , Page Footer e Summary). 3. Inserindo os Fields Ser adicionado as seguintes Fields : nome curso ListaDisciplinas OBS IMPORTANTE : No Field Class do Field ListaDisciplinas tem que ser um Object
OBS IMPORTANTE : , No Field Class do Field ListaDisciplinas tem que ser um Object
4 . Montando o Relatrio Adicione as Field no column Header Para adicionar as field clique nela e arraste at aonde voc deseja inserir ( neste caso ser na Column Header). Ao terminar de inserir aparecer uma janela de um ok.
4.3 clique em OK Crie um titulo para Relatrio Clique em paleta e procure o Text static arraste ele at a rea desejada (Column Header ) e digite o titulo do relatrio.
Text Static
Field
B . MONTANDO O SUBRELATORIO
1. Clique no cone Subrelatorio
2.1 Escolha a opo Create new report , pois no temos nenhum outro subReport criado , caso j possua escolha a opo Use an existing report.
3. Montando o Subrelatorio 3.1 Delete as bands que no serao necessarias ( Title, Page Header, Column Header, Column Footer , Page Footer e Summary). Deixe somente a Detail . 3.2 Colocando os Fields Necessario . nome cargaHoraria 3.1 Adicione os Fields no Detail .
3.4. 2 Mude a Language Groovy para java . OBS : FAA A MESMA CONFIGURAO NO RELATORIO PRINCIPAL TAMBEM .
C. CONFIGURANDO O SUBRELATORIO .
1. Volte para o RelAluno ( Relatorio Principal ) ,v em Parametros . Repare que doi criado um Parametro chamado SUBREPORT_DIR . Clique com o boto direiro para Renomear esse Parametro .
1.1 Alterando o nome do Parametro que faz a conexo entre o Relatorio e o SubRelatorio .
2 Fazendo Configurao .
2.1 Clique no Subrelatorio e v em Propriedades . As configuraes em propriedades sero as seguintes 1. SubReport Expression clique no icone . ir abrir uma janela ,apague o que est escrito , em seguida clique em
Parameters e procuro o parametro criado no item acima (pathsubRel). 2. Verifique se a opo Expression Class est selecionado com java.lang.String e se o using Cache est selecionado . 3. Connection type Selecione o Use a datasource expression . 4. Verifique se no Data Source Expression est janela , clique em Fields e procure o ListaDisciplina . 5. Parameters clique no icone . clique em add , em seguida abrir uma janela . no campo SubReport parameter . Clique em Fields e procure o , caso no esteja ,clique no icone . ir abri uma
name digite o nome do seu parametro , e em value Expression clique no icone ListaDisciplina.
1 2
3 4 5
D. COMPILANDO
Copile os dois Relatrio ( O relatrio Principal(RelAlunos) e o SubRelatorio (RelAlunosDisciplina)) Para copilar clique com o boto direito do nome do Relatrio e clique me Compile Report .
1.2 Compilando
OBS : NA HORA DE SALVAR OS DOIS RELATORIOS , SALVE NA PASTA QUE VOC CRIAR A SUA MAIN PARA GERAR O RELATORIO , NO CASO DESSE EXEMPLO SER NA PASTA JASPER .
this.curso = curso; } /** * @return Returns the disciplinas. */ public ArrayList getDisciplinas() { return disciplinas; } /** * @param disciplinas The disciplinas to set. */ public void setDisciplinas(ArrayList disciplinas) { this.disciplinas = disciplinas; } /** * @return Returns the nome. */ public String getNome() { return nome; } /** * @param nome The nome to set. */ public void setNome(String nome) { this.nome = nome; } }
} public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } }
/** * ESSA CLASSE POSSUI DOIS METODOS OBRIGATORIOS NEXT() E FIELD VALUE * @author RJFurutani * @03/05/2005 */ public class RelatorioAlunosDataSource implements JRDataSource { private Iterator itrAlunos; private Iterator itrLicenca; private Object valorAtual; private int i = 0; private boolean irParaProximoAluno = true; /** * CONSTRUTOR DA CLASSE * @param campos * @param itr */ public RelatorioAlunosDataSource(List lista) { super();// indica que ser utilizado o construtor da classe pai this.itrAlunos = lista.iterator(); } /* * (non-Javadoc) * * @see net.sf.jasperreports.engine.JRDataSource#next() */ public boolean next() throws JRException { valorAtual = itrAlunos.hasNext() ? itrAlunos.next() : null;
irParaProximoAluno = (valorAtual != null); return irParaProximoAluno; } /* * (non-Javadoc) * * @see net.sf.jasperreports.engine.JRDataSource#getFieldValue(net.sf.jasperreports.engine .JRField) */ public Object getFieldValue(JRField campo) throws JRException { Object valor = null; Aluno aluno = (Aluno) valorAtual; if ("nome".equals(campo.getName())) { valor = aluno.getNome(); } else if ("ListaDisciplinas".equals(campo.getName())) { valor = new JRBeanCollectionDataSource(aluno.getDisciplinas()); } else if ("curso".equals(campo.getName())) { valor = aluno.getCurso(); } return valor; } }
package jasper; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import import import import net.sf.jasperreports.engine.JasperFillManager; net.sf.jasperreports.engine.JasperManager; net.sf.jasperreports.engine.JasperPrint; net.sf.jasperreports.view.JasperViewer;
public class GerarRelatorio { private static final String rel1 = "RelAlunos.jasper"; // caminho do Relatorio private static final String rel2 = "jasper/RelAlunosDisciplinas.jasper";// caminho do relatorio /** * CONSTRUTOR SER RESPONSAVEL POR MONTAR O RELATORIO * @throws Exception */ public GerarRelatorio() throws Exception { // Lista dos alunos ArrayList listaAlunos = GerarDadosFicticios.getListaAlunos(); // Cria o data source para o relatrio RelatorioAlunosDataSource ds = new RelatorioAlunosDataSource( listaAlunos); // Parametros do relatorio Map<String, String> parametros = new HashMap<String, String>(); parametros.put("pathSubRel",rel2); JasperPrint impressao = JasperFillManager.fillReport(getClass() .getResourceAsStream(rel1), parametros, ds);
//exibe o relatrio //JasperViewer viewer = new JasperViewer(impressao, true); // viewer.show(); // Grava o relatrio em disco em pdfasper //JasperManager.printReportToPdfFile(impressao, caminho+nome+data+".pdf"); JasperManager.printReportToPdfFile(impressao, "c://teste.pdf"); } public static void main(String[] args) throws Exception { new GerarRelatorio(); } }
GerarDadosFictcios
package jasper; import java.util.ArrayList; import vo.Aluno; import vo.Disciplina; /** * @author RJFurutani * @04/05/2005 */ public class GerarDadosFicticios { public static ArrayList getListaAlunos() { ArrayList listaAlunos = new ArrayList(); ArrayList disciplinas = null; Disciplina disciplina1 = null; Disciplina disciplina2 = null; Disciplina disciplina3 = null; Disciplina disciplina4 = null; /* * Aluno Roberto */ disciplina1 = new Disciplina("Banco de Dados I", "45Hs"); disciplina2 = new Disciplina("Equaes Diferenciais I", "50Hs"); disciplina3 = new Disciplina("Algoritmos e Estrutura de Dados I", "60Hs"); disciplina4 = new Disciplina("Inteligencia Artificial I", "60Hs"); disciplinas = new ArrayList(); disciplinas.add(disciplina1); disciplinas.add(disciplina2); disciplinas.add(disciplina3); disciplinas.add(disciplina4); Aluno roberto = new Aluno("Roberto Furutani", "Ciencia da Computacao", disciplinas); listaAlunos.add(roberto); /* * Aluna Fernanda */ disciplina1 = new Disciplina("Biologia", "45Hs"); disciplina2 = new Disciplina("Matematica Elementar II", "30Hs"); disciplina3 = new Disciplina("Instrumentao Cirurgica", "70Hs"); disciplinas = new ArrayList(); disciplinas.add(disciplina1); disciplinas.add(disciplina2);
disciplinas.add(disciplina3); Aluno fernanda = new Aluno("Fernanda Fernandes", "Enfermagem", disciplinas); listaAlunos.add(fernanda); /* * Aluna Silvia */ disciplina1 = new Disciplina("Fisica", "45Hs"); disciplina4 = new Disciplina("Quimica", "45Hs"); disciplina2 = new Disciplina("Equaes Diferenciais II", "50Hs"); disciplina3 = new Disciplina("Ingls", "60Hs"); disciplinas = new ArrayList(); disciplinas.add(disciplina1); disciplinas.add(disciplina2); disciplinas.add(disciplina3); disciplinas.add(disciplina4); Aluno silvia = new Aluno("Silvia da Silva", "Matemtica", disciplinas); listaAlunos.add(silvia); /* * Aluno Andr */ disciplina1 = new Disciplina("Banco de Dados II", "65Hs"); disciplina2 = new Disciplina("Calculo Numerico I", "50Hs"); disciplina3 = new Disciplina("Eletronica I", "60Hs"); disciplinas = new ArrayList(); disciplinas.add(disciplina1); disciplinas.add(disciplina2); disciplinas.add(disciplina3); Aluno andre = new Aluno("Andr Oliveira Lima", "Engenharia da Computacao", disciplinas); listaAlunos.add(andre); return listaAlunos; } }
Observes Caso deseje que a cada subRelatorio criado aparea o nome e o curso , coloque essas fields na band detail acima do subRelatorio .
REFERENCIAS
Roberto Furutani - http://www.furutani.com.br/2009/02/tutorial-de-jasperreports-usando-arraylist-de-vo/