relatório dinâmico com jasperdesign » roberto furutani
TRANSCRIPT
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 1/8
Inicio
ArquivosArtigos
Roberto Furutani
Praa do Pr do sol - SP
Relatrio Dinmico com JasperDesign
08/junho/2010 - Java
Ol
Que tal fazer um relatrio sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente?
Pois isso possvel usando algumas classes do JasperReports como a JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e
JRDesignExpression. No muito complicado fazer isso no como voc podem ver no exemplo que fiz, o mais dficil mesmo posicionar os
elementos na pgina. Precisa usar muito a imaginao.
Basicamente feito tudo pela classe abaixo.
package br.com.furutani.reldin;import java.awt.Color;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.design.JRDesignBand;import net.sf.jasperreports.engine.design.JRDesignExpression;import net.sf.jasperreports.engine.design.JRDesignField;import net.sf.jasperreports.engine.design.JRDesignStaticText;import net.sf.jasperreports.engine.design.JRDesignTextField;import net.sf.jasperreports.engine.design.JasperDesign;import net.sf.jasperreports.engine.type.HorizontalAlignEnum;public class ReportDesigner {public JasperDesign getDesign() throws JRException {// Cria um novo relatrioJasperDesign jasperDesign = new JasperDesign();// PAGEconfigPage(jasperDesign);// FIELDJRDesignField field = null;addField("referencia", String.class, jasperDesign);addField("consumo", Integer.class, jasperDesign);// TITLEJRDesignBand jrDesignband = null;JRDesignStaticText staticText = null;configTitle(jasperDesign);// PAGE HEADERjrDesignband = new JRDesignBand();jrDesignband.setHeight(15);jasperDesign.setPageHeader(jrDesignband);// COLUMN HEADERjrDesignband = new JRDesignBand();jrDesignband.setHeight(25);jasperDesign.setColumnHeader(jrDesignband);//Dados da referenciastaticText = new JRDesignStaticText();staticText.setX(0);staticText.setY(5);staticText.setWidth(150);staticText.setHeight(15);staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);staticText.setText("Referncia - Ms/Ano");staticText.setBold(true);jrDesignband.addElement(staticText);//Dados do consumostaticText = new JRDesignStaticText();staticText.setX(150);staticText.setY(5);staticText.setWidth(100);staticText.setHeight(15);
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 2/8
staticText.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);staticText.setText("Consumo - kWh");staticText.setBold(true);jrDesignband.addElement(staticText);// DETAILjrDesignband = new JRDesignBand();jrDesignband.setHeight(20);//Dados da referenciaJRDesignTextField textField = new JRDesignTextField();textField.setBlankWhenNull(false);textField.setX(0);textField.setY(5);textField.setWidth(150);textField.setHeight(15);// Adiciona a expressao no campoJRDesignExpression expression = new JRDesignExpression();expression.setValueClass(java.lang.String.class);expression.setText("$F{referencia}");textField.setExpression(expression);jrDesignband.addElement(textField);//Dados do consumotextField = new JRDesignTextField();textField.setBlankWhenNull(false);textField.setX(200);textField.setY(5);textField.setWidth(50);textField.setHeight(15);textField.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);//Adiciona a expressao no campoexpression = new JRDesignExpression();expression.setValueClass(java.lang.Integer.class);expression.setText("$F{consumo}");textField.setExpression(expression);jrDesignband.addElement(textField);jasperDesign.setDetail(jrDesignband);// COLUMN FOOTER (Escondido)jrDesignband = new JRDesignBand();jrDesignband.setHeight(0);jasperDesign.setColumnFooter(jrDesignband);// PAGE FOOTER (Escondido)jrDesignband = new JRDesignBand();jrDesignband.setHeight(0);jasperDesign.setPageFooter(jrDesignband);// NO DATA (No JasperViewer no mostra, na web mostraria)jrDesignband = new JRDesignBand();jrDesignband.setHeight(20);staticText = new JRDesignStaticText();staticText.setX(10);staticText.setY(5);staticText.setWidth(64);staticText.setHeight(15);staticText.setText("Sem registros para compor o relatrio!");staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);jrDesignband.addElement(staticText);jasperDesign.setNoData(jrDesignband);// SUMMARY (Escondido)jrDesignband = new JRDesignBand();jrDesignband.setHeight(0);jasperDesign.setSummary(jrDesignband);return jasperDesign;}/*** Ajusta os parametros do titulo* @param jasperDesign*/private void configTitle(JasperDesign jasperDesign) {JRDesignBand band = new JRDesignBand();band.setHeight(50);JRDesignStaticText staticText = new JRDesignStaticText();staticText.setX(10);staticText.setY(10);staticText.setWidth(450);staticText.setHeight(40);staticText.setFontName("Tahoma");staticText.setForecolor(Color.BLUE);staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);staticText.setFontSize(24);staticText.setPdfFontName("Helvetica-Bold");staticText.setBold(true);staticText.setText("Histrico de Consumo");band.addElement(staticText);jasperDesign.setTitle(band);}/*** Adiciona campos ao relatorio
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 3/8
* @param name
* @param clazz* @param jasperDesign* @throws JRException*/private void addField(String name, Class clazz, JasperDesign jasperDesign)throws JRException{JRDesignField field = new JRDesignField();field.setName(name);field.setValueClass(clazz);jasperDesign.addField(field);}/*** Configura a pagina* @param jasperDesign*/private void configPage(JasperDesign jasperDesign) {jasperDesign.setPageWidth(500);jasperDesign.setPageHeight(1000);jasperDesign.setColumnCount(1);jasperDesign.setColumnWidth(450);jasperDesign.setColumnSpacing(0);jasperDesign.setLeftMargin(10);jasperDesign.setRightMargin(10);jasperDesign.setBottomMargin(5);jasperDesign.setTopMargin(5);jasperDesign.setName("RelatorioDeConsumo");}}
O exemplo foi feito no Eclipse Galileo. No foi usado nada de web apesar de ser facilmente adaptado para rodar em ambiente web.
Adicione as bibliotecas no classpath do projeto que esto dentro de \iReport-3.7.2\ireport\modules\ext para compilar os fontes:
ant-1.7.1.jarantlr-2.7.6.jar
asm-attrs.jarasm.jar
barbecue-1.5-beta1.jarbarcode4j-2.0.jar
batik-anim.jarbatik-awt-util.jar
batik-bridge.jarbatik-css.jar
batik-dom.jarbatik-ext.jarbatik-gvt.jarbatik-parser.jar
batik-script.jarbatik-svg-dom.jarbatik-svggen.jarbatik-util.jar
batik-xml.jarbcel-5.2.jarbsh-2.0b4.jarcastor-1.2.jar
cglib-2.1.jarcincom-jr-xmla.jarcommons-beanutils-1.8.2.jarcommons-collections-3.2.1.jarcommons-dbcp-1.2.2.jar
commons-digester-1.7.jarcommons-javaflow-20060411.jarcommons-logging-1.1.jarcommons-math-1.0.jar
commons-pool-1.3.jarcommons-vfs-1.0.jardom4j-1.6.jarehcache-1.1.jar
eigenbase-properties-1.1.0.10924.jareigenbase-resgen-1.3.0.11873.jareigenbase-xom-1.3.0.11999.jarejb3-persistence.jar
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 4/8
groovy-all-1.5.5.jarhibernate-annotations.jarhibernate-commons-annotations.jar
hibernate3.jarhsqldb-1.8.0-10.jariText-2.1.7.jariTextAsian.jar
jakarta-bcel-20050813.jarjasperreports-3.7.2.jarjasperreports-chart-themes-3.6.2.jarjasperreports-extensions-3.5.3.jarjasperreports-fonts-3.7.2.jar
javacup.jarjavassist-3.4.GA.jarjaxen-1.1.1.jarjcommon-1.0.15.jar
jdt-compiler-3.1.1.jarjfreechart-1.0.12.jarjpa.jarjs_activation-1.1.jar
js_axis-1.4patched.jarjs_commons-codec-1.3.jarjs_commons-discovery-0.2.jarjs_commons-httpclient-3.1.jarjs_jasperserver-common-ws-3.5.0.jar
js_jaxrpc.jarjs_mail-1.4.jarjs_saaj-api-1.3.jarjs_wsdl4j-1.5.1.jar
jta.jarjxl-2.6.jarlog4j-1.2.15.jarmondrian-3.1.1.12687-Jaspersoft.jar
olap4j-0.9.7.145.jarpng-encoder-1.5.jarpoi-3.5-FINAL-20090928.jarrex-20080421.jarrhino-1.7R1.jar
saaj-api-1.3.jarslf4j-api.jarslf4j-log4j12.jarspring.jar
sqleonardo-2007.03.jarswingx-2007_10_07.jarxml-apis-ext.jar
xml-apis.jar
O projeto do Eclipse com os fontes est disponvel no link abaixo:JasperDinamico
O resultado ser esse:
At mais,
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 5/8
Roberto
Leia tambm:
Upload de mltiplos arquivos com HTML5 e Java ServletLiberar espao usado pelo instagram no iPhoneCarto de memria Wireless Eye-FiComo ir a Colonia Del SacramentoLer ref cursor em PL/SQL
ireport, jasperreports
Roberto Furutani Comentrios RSS 0
Tutoriais sobre Servios Web e WS-BPELAlterar senha do usurio sys do Oracle XE
11 comentrios
1. #
George junho 16th, 2010 at 15:50
Ol, Roberto. Gostaria de saber qual fonte/manual voc usou como auxlio para essa implementao. Talvez eu tambm precise implementar
relatrios dinmicos sem uso de JRXML, mas ainda no achei tutorais a respeito, e se basear s nas docs da api tarefa quase impossvel.Grato pelo post.
Responda a esse comentrio
#
Roberto Furutani junho 16th, 2010 at 16:47
Ol
Eu pesquisei em fruns lista de discusses e fui juntando algumas dicas que ia encontrando para montar o post.Fazer isso olhando a API no to impossvel assim, mas concordo que dificil pois o javadoc deles no ajuda muito.D uma boa analizada no pacote net.sf.jasperreports.engine.design.
Responda a esse comentrio
2. #
Felipe setembro 24th, 2010 at 12:06
Mas se temos o IReports, por que no utiliz-lo? No consegui achar uma resposta pra essa pergunta.
De qualquer forma, parabns pela fora de vontade. rsrs
Responda a esse comentrio
#
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 6/8
Roberto Furutani setembro 24th, 2010 at 18:38
Pode ser difcil usar essa forma de gerar relatrio, mas de repente se voc precisar incluir ou tirar uma coluna ou um campo dinamicamentetemos uma opo ai.
Responda a esse comentrio
3. #
Erick novembro 18th, 2010 at 15:48
Roberto fiz uma aqui mais no esta funcionando veja o link :
http://www.guj.com.br/posts/list/224980.java
vc poderia me ajudar?
pode mandar email para [email protected]
Deste ja agradeo
Responda a esse comentrio
4. #
Deann Reese
dezembro 24th, 2010 at 6:35
Roberto fiz uma aqui mais no esta funcionando veja o link : http://www.guj.com.br/posts/list/224980.java vc poderia me ajudar? pode mandar
email para [email protected] Deste ja agradeo
Responda a esse comentrio
5. #
crm
setembro 13th, 2011 at 11:34
Roberto preciso fazer passando parmetros pro iReport, sabe como fazer?
Responda a esse comentrio
#
Roberto Furutani setembro 13th, 2011 at 19:18
Tem um artigo aqui no site sobre parmetros no ireport.
Responda a esse comentrio
6. #
Raul Frederico Welter
outubro 25th, 2011 at 13:24
Ol Roberto, primeiramente parabns pelo tutorial.
Agora, eu tenho o seguinte problema, criei um relatrio no iReport, porm, queria compil-lo em outra mquina sem o arquivo .jrxml (cdigofonte) certo? H como fazer isso? Obrigado.
Responda a esse comentrio
7. #
james alberto
julho 5th, 2012 at 21:15
Ol estou seguindo o seu tuto, mas d erro na linhajasperDesign.setDetail(jrDesignband); o java no estar encontrando o mtodo .setDetail, vc pode ajudar ?
Responda a esse comentrio
#
Jorge Palma
julho 23rd, 2012 at 14:56
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 7/8
((JRDesignSection)jasperDesign.getDetailSection()).addBand(jrDesignband);
Responda a esse comentrio
Deixe um comentrio
Nome (obrigatrio)
E-Mail (no ser exibido) (obrigatrio)
Website
Enviar
Avise-me por email quando novos comentrios forem postados aqui.
Procurar
Pesquisar por: Pesquisar
500px
Sunset
Assuntos
Selecionar categoria
Tpicos recentes
Java8 6 linhas de cdigo que eu gostei
Mostrar a soma dos arquivos selecionados no finder Mac OSXExibir o tamanho dos diretrios no finder Mac OSX
Funo PLSQL para converter smbolos HTML (entities)Como configurar o time capsule para funcionar com o Live TIM
Visualizaes
(44.752) - Usando o JRBeanCollectionDataSource
(43.436) - Simulador de Fila de Impresso
(43.067) - Onde dia 20/11 feriado?(42.809) - Como zerar o iPhone ou iPad antes de vender
(20.433) - Clculo da diferena entre datas em Java(12.334) - Tutorial de JasperReports usando ArrayList de VO
(11.344) - Exemplo de aplicao JPA (Hibernate)
(10.974) - Gerando Relatrios Com JasperReports e iReports no Netbeans(10.729) - Aplicativo para publicar fotos no instagram
(10.244) - Gerando certificados com OpenSSL
Lista de Links
1up4Developers
ABAP 101
-
11/5/2014 Relatrio Dinmico com JasperDesign Roberto Furutani
http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/ 8/8
Andr L. S.
Aquele blog de SOA
Architecture JournalBlog About ORACLE Luciano Alvarenga
Blog da CaelumBlog do Claudio Miranda
Blog do Urubatan
Bruno Rossettos BlogDevelopment Blog
Diego Pires Plentz
Documentationfiado s amanh
Fragmental Software e BatatasFurious Bob
Gorda Safada
Guilherme ChapiewskiGUJ
JAVA NOROESTEMarco Mendess Blog
Mobile Tutorial
Programando sem cafenaRodrigo Panachi Weblog
SOA Magazine
SOA, Simples Assim!Thunder-Boy
Tutorial de iReport
Tag cloud
custom tag nyc Jakarta POI pesquisa Boas Prticas Faculdade Tomcat JBoss ESB gmail ADF 11G finder cewolf adobe flex 3 blog .net jsp Instagram plsql OpenSSL Google jasperreports imagens
ajax jdeveloper spring jcharts toplink JFreeChart mac scbcd SOA iphone Java jsf certificacao Oracle anti-aliasing new york Apache JExcel ldap hibernate ireport jpa Java7