Olá, Foram lançados no dia 10 de Janeiro de 2011 a versão 4.0.0 do JasperReports e do iReport. Pelo que vi no changelog do iReport não tem muitas novidades, apenas correção de erros. No JasperReports foram incluídos essas funcionalidades listadas abaixo, além de correções de bugs.
- new CSV query executer added to simplify to allow configuring CSV data sources from within report templates using built-in paramters and config properties; - new CSV metadata exporter added to better control the CSV export by marking columns in the report template using custom properties; - new chapters in the Sample Reference documentation have beed completed (http://jasperreports.sf.net/sample.reference.html);
Download iReport https://sourceforge.net/projects/ireport/files iReport plugin for NetBeans http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=4425 Biblioteca JasperReports http://sourceforge.net/projects/jasperreports/files/jasperreports/ Até mais, Roberto
Share
Olá! JM 84
  A edição 84 da Java Magazine está mais especial pra mim, pois nesta edição está publicado o artigo Gerando relatórios com iReport escrito por mim. Com ele espero ajudar de alguma forma os iniciantes nessa ferramenta, que como eu sofreram um pouco pra usar a duplinha dinâmica JasperReport/iReport.

 

 

Até mais,

Roberto

Share
Olá Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente? Pois isso é possível usando algumas classes do JasperReports como a JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil mesmo é posicionar os elementos na página. Precisa usar muito a imaginação. 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 relatório
JasperDesign jasperDesign = new JasperDesign();
// PAGE
configPage(jasperDesign);
// FIELD
JRDesignField field = null;
addField("referencia", String.class, jasperDesign);
addField("consumo", Integer.class, jasperDesign);
// TITLE
JRDesignBand jrDesignband = null;
JRDesignStaticText staticText = null;
configTitle(jasperDesign);
// PAGE HEADER
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(15);
jasperDesign.setPageHeader(jrDesignband);
// COLUMN HEADER
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(25);
jasperDesign.setColumnHeader(jrDesignband);
//Dados da referencia
staticText = new JRDesignStaticText();
staticText.setX(0);
staticText.setY(5);
staticText.setWidth(150);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
staticText.setText("Referência - Mês/Ano");
staticText.setBold(true);
jrDesignband.addElement(staticText);
//Dados do consumo
staticText = new JRDesignStaticText();
staticText.setX(150);
staticText.setY(5);
staticText.setWidth(100);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
staticText.setText("Consumo - kWh");
staticText.setBold(true);
jrDesignband.addElement(staticText);
// DETAIL
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);
//Dados da referencia
JRDesignTextField textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(0);
textField.setY(5);
textField.setWidth(150);
textField.setHeight(15);
// Adiciona a expressao no campo
JRDesignExpression expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText("$F{referencia}");
textField.setExpression(expression);
jrDesignband.addElement(textField);
//Dados do consumo
textField = 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 campo
expression = 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 não 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 relatório!");
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("Histórico de Consumo");
band.addElement(staticText);
jasperDesign.setTitle(band);
}
/**
* Adiciona campos ao relatorio
* @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. Não foi usado nada de web apesar de ser facilmente adaptado para rodar em ambiente web. Adicione as bibliotecas no classpath do projeto que estão dentro de <DIR_INSTALL>\iReport-3.7.2\ireport\modules\ext para compilar os fontes:

ant-1.7.1.jar antlr-2.7.6.jar asm-attrs.jar asm.jar barbecue-1.5-beta1.jar barcode4j-2.0.jar batik-anim.jar batik-awt-util.jar batik-bridge.jar batik-css.jar batik-dom.jar batik-ext.jar batik-gvt.jar batik-parser.jar batik-script.jar batik-svg-dom.jar batik-svggen.jar batik-util.jar batik-xml.jar bcel-5.2.jar bsh-2.0b4.jar castor-1.2.jar cglib-2.1.jar cincom-jr-xmla.jar commons-beanutils-1.8.2.jar commons-collections-3.2.1.jar commons-dbcp-1.2.2.jar commons-digester-1.7.jar commons-javaflow-20060411.jar commons-logging-1.1.jar commons-math-1.0.jar commons-pool-1.3.jar commons-vfs-1.0.jar dom4j-1.6.jar ehcache-1.1.jar eigenbase-properties-1.1.0.10924.jar eigenbase-resgen-1.3.0.11873.jar eigenbase-xom-1.3.0.11999.jar ejb3-persistence.jar groovy-all-1.5.5.jar hibernate-annotations.jar hibernate-commons-annotations.jar hibernate3.jar hsqldb-1.8.0-10.jar iText-2.1.7.jar iTextAsian.jar jakarta-bcel-20050813.jar jasperreports-3.7.2.jar jasperreports-chart-themes-3.6.2.jar jasperreports-extensions-3.5.3.jar jasperreports-fonts-3.7.2.jar javacup.jar javassist-3.4.GA.jar jaxen-1.1.1.jar jcommon-1.0.15.jar jdt-compiler-3.1.1.jar jfreechart-1.0.12.jar jpa.jar js_activation-1.1.jar js_axis-1.4patched.jar js_commons-codec-1.3.jar js_commons-discovery-0.2.jar js_commons-httpclient-3.1.jar js_jasperserver-common-ws-3.5.0.jar js_jaxrpc.jar js_mail-1.4.jar js_saaj-api-1.3.jar js_wsdl4j-1.5.1.jar jta.jar jxl-2.6.jar log4j-1.2.15.jar mondrian-3.1.1.12687-Jaspersoft.jar olap4j-0.9.7.145.jar png-encoder-1.5.jar poi-3.5-FINAL-20090928.jar rex-20080421.jar rhino-1.7R1.jar saaj-api-1.3.jar slf4j-api.jar slf4j-log4j12.jar spring.jar sqleonardo-2007.03.jar swingx-2007_10_07.jar xml-apis-ext.jar xml-apis.jar

O projeto do Eclipse com os fontes está disponível no link abaixo: JasperDinamico O resultado será esse: Até mais, Roberto
Share
Olá! Muitas pessoas tem dificuldade em utilizar os relatórios feitos no iReport em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos .jasper em sua aplicação para que o Servlet ou o ManagedBean consiga lê-los. Então é bem comum ver  erros como esses:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException
java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
Recomendo colocar os arquivos jasper e/ou jrxml juntos as classes Java e não nos diretórios abaixo de Páginas Web no Netbeans ou Web Content no Eclipse, pois eles podem fica expostos. Não é desejado que os usuários possam baixa os arquivos jasper e/ou jrxml e ficarem fuçando neles. A figura abaixo mostra o local correto para copiar o arquivo jasper e/ou jrxml no Netbeans. No Eclipse a lógica é a mesma, no lugar de Pacotes de código fontes coloque em Java Resorces: src. Note que o arquivo jasper e/ou jrxml está no mesmo pacote do GerarRelatorioServlet.java e para obter o InputStream no Servlet eufaço assim getResourceAsStream("Rel_Precipitacoes.jasper"). Para ser mais organizado é possível colocar em outro pacote, nesse caso é preciso ajustar o caminho ao jasper com relação ao local do GerarRelatorioServlet.java. No exemplo abaixo o jasper ficou no pacote br.com.furutani.relatorios logo obtemos o InputStream passando esse caminho "../relatorios/Rel_Precipitacoes.jasper" no GerarRelatorioServlet. O projeto do netbeans com os fontes e bibliotecas do JasperReports podem ser baixados no link:  Projeto Jasper Projeto Jasper Netbeans 6.8 Espero ter ajudado. Até mais, Roberto
Share

JasperReports em Flash

01/fevereiro/2010 - Java, Tutoriais

Olá! Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  😳 Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também. Neste exemplo eu usei um outro exemplo que acompanha o JasperReports Flash Viewer 3.0.0. » Clique aqui para ver o exemplo funcionando. » Download dos fontes: Relatório em JasperReports e Flash Exemplo de relatório em JasperReports e Flash Outra opção para exibir relatórios em flash é utilizar o xViewer mostrado neste post Exibindo relatórios gerados pelo Jasper Report em Flex. O exemplo precisa do Adobe Flex e do ant para compilar, mas voce pode importar os fontes para sua IDE favorita sem problemas é só adicionar os jars no classpath. Até mais, Roberto
Share