Relatório Dinâmico Com JasperDesign » Roberto Furutani

Embed Size (px)

Citation preview

  • 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