Relatório com iReport a partir de um java.util.list

6 respostas
V

Fala galera!

to tentando criar um report em xls a partir de um List (java.util.List) usando o iReport. O problema é que da uns erros, e eu realmente não sei o que estou fazendo errado.

O código é o seguinte:

Collection<Report> reports = createBeanCollection(); // lista de objetos Report, que contém todas as informações que quero mostrar
	
	JRDataSource jrRS = new JRBeanCollectionDataSource(reports, false);

	Map parameters = new HashMap();

	try {
		JasperFillManager.fillReportToFile("c:/users/vitor/report3.jasper", parameters, jrRS);
		JasperViewer.viewReport("report3.jrprint", false);
	}
		catch (JRException e) {
		e.printStackTrace();
	}

Na linha “JasperFillManager.fillReportToFile(“c:/users/vitor/report3.jasper”, parameters, jrRS);” ele dá o seguinte erro:

java.lang.ClassCastException: cannot assign instance of [Lnet.sf.jasperreports.engine.JRBand; to field net.sf.jasperreports.engine.base.JRBaseSection.bands of type [Lnet.sf.jasperreports.engine.JRBand; in instance of net.sf.jasperreports.engine.base.JRBaseSection

java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2032)

java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1212)

java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1953)

java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)

java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)

java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)

java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)

java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)

java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)

java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)

net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)

net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:443)

A classe Report é assim:

public class Report implements Serializable{
	
	private Long userId;
	
	private String userEmail;
	private String accountIndividualName;
	private String username;
	
	private Long borrowerId;
	private Long lenderId;

	private Date historyDate;

	private Date lisFilledCreationDate;
	private Date lisListedCreationDate;
	private Date lisDeniedCreationDate;
	private Date lisFinLess50CreationDate;
	private Date lisFinNotAcceptedCreationDate;
	private Date lisOkCreationDate;
	private Date lPendingCreationDate;
	private Date lokCreationDate;
	private Date lDeniedCreationDate;
	private Date bidDate;
	
	private boolean userValidated;

... getters e setters...
}

Se alguem puder me dar uma ajuda fico muito grato!!

Ah, e o xml gerado pelo iReport é o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report3" language="groovy" pageWidth="3000" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
        <property name="ireport.scriptlethandling" value="0"/>
	<property name="ireport.encoding" value="UTF-8"/>        
        <import value="net.sf.jasperreports.engine.*"/>
	<import value="net.sf.jasperreports.engine.data.*"/>
	<import value="java.util.*"/>
        <style name="Arial_Normal" isDefault="true" fontName="Arial" fontSize="12" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/>
	<style name="Arial_Bold" isDefault="false" fontName="Arial" fontSize="12" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/>
	<style name="Arial_Italic" isDefault="false" fontName="Arial" fontSize="12" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Oblique" pdfEncoding="Cp1252" isPdfEmbedded="false"/>
	<field name="userId" class="java.lang.Long"/>
	<field name="userEmail" class="java.lang.String"/>
	<field name="accountIndividualName" class="java.lang.String"/>
	<field name="username" class="java.lang.String"/>
	<field name="borrowerId" class="java.lang.Long"/>
	<field name="lenderId" class="java.lang.Long"/>
	<field name="historyDate" class="java.util.Date"/>
	<field name="lisFilledCreationDate" class="java.util.Date"/>
	<field name="lisListedCreationDate" class="java.util.Date"/>
	<field name="lisDeniedCreationDate" class="java.util.Date"/>
	<field name="lisFinLess50CreationDate" class="java.util.Date"/>
	<field name="lisFinNotAcceptedCreationDate" class="java.util.Date"/>
	<field name="lisOkCreationDate" class="java.util.Date"/>
	<field name="lPendingCreationDate" class="java.util.Date"/>
	<field name="lokCreationDate" class="java.util.Date"/>
	<field name="lDeniedCreationDate" class="java.util.Date"/>
	<field name="bidDate" class="java.util.Date"/>
	<field name="userValidated" class="java.lang.Boolean"/>
	<background>
		<band splitType="Stretch"/>
	</background>
	<title>
		<band height="79" splitType="Stretch"/>
	</title>
	<pageHeader>
		<band height="35" splitType="Stretch"/>
	</pageHeader>
	<columnHeader>
		<band height="61" splitType="Stretch">
			<staticText>
				<reportElement x="0" y="41" width="71" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[ID]]></text>
			</staticText>
			<staticText>
				<reportElement x="71" y="41" width="181" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[E-MAIL]]></text>
			</staticText>
			<staticText>
				<reportElement x="252" y="41" width="323" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[NOME]]></text>
			</staticText>
			<staticText>
				<reportElement x="575" y="41" width="143" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[APELIDO]]></text>
			</staticText>
			<staticText>
				<reportElement x="718" y="41" width="100" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[TOMADOR]]></text>
			</staticText>
			<staticText>
				<reportElement x="818" y="41" width="100" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[INVESTIDOR]]></text>
			</staticText>
			<staticText>
				<reportElement x="918" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA CONTA]]></text>
			</staticText>
			<staticText>
				<reportElement x="1078" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA LEILÃO PREENCHIDO]]></text>
			</staticText>
			<staticText>
				<reportElement x="1238" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA LEILÃO LISTADO]]></text>
			</staticText>
			<staticText>
				<reportElement x="1398" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA LEILÃO NEGADO]]></text>
			</staticText>
			<staticText>
				<reportElement x="1558" y="41" width="185" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA LEILÃO S SUCESSO < 50]]></text>
			</staticText>
			<staticText>
				<reportElement x="1743" y="41" width="216" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA LEILÃO S SUCESSO N ACEITE]]></text>
			</staticText>
			<staticText>
				<reportElement x="1959" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA LEILÃO SUCESSO]]></text>
			</staticText>
			<staticText>
				<reportElement x="2119" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA EMPRÉSTIMO PENDENTE]]></text>
			</staticText>
			<staticText>
				<reportElement x="2279" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA EMPRÉSTIMO OK]]></text>
			</staticText>
			<staticText>
				<reportElement x="2439" y="41" width="182" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA EMPRÉSTIMO NEGADO]]></text>
			</staticText>
			<staticText>
				<reportElement x="2621" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[DATA BID]]></text>
			</staticText>
			<staticText>
				<reportElement x="2781" y="41" width="160" height="20"/>
				<textElement textAlignment="Center">
					<font size="12" isBold="true"/>
				</textElement>
				<text><![CDATA[VERIFICADO]]></text>
			</staticText>
		</band>
	</columnHeader>
	<detail>
		<band height="126" splitType="Stretch">
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement key="textField" x="0" y="0" width="71" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.Long"><![CDATA[$F{userId}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="71" y="0" width="181" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{userEmail}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="252" y="0" width="323" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{accountIndividualName}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="575" y="0" width="143" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{username}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="718" y="0" width="100" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.Long"><![CDATA[$F{borrowerId}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="818" y="0" width="100" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.Long"><![CDATA[$F{lenderId}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="918" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{historyDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="1078" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lisFilledCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="1238" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lisListedCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="1398" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lisDeniedCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="1558" y="0" width="185" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lisFinLess50CreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="1743" y="0" width="216" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lisFinNotAcceptedCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="1959" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lisOkCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="2119" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lPendingCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="2279" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lokCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="2439" y="0" width="182" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{lDeniedCreationDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="2621" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{bidDate}]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Auto" isBlankWhenNull="true">
				<reportElement x="2781" y="0" width="160" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.Boolean"><![CDATA[$F{userValidated}]]></textFieldExpression>
			</textField>
		</band>
	</detail>
	<columnFooter>
		<band height="45" splitType="Stretch"/>
	</columnFooter>
	<pageFooter>
		<band height="54" splitType="Stretch"/>
	</pageFooter>
	<summary>
		<band height="42" splitType="Stretch"/>
	</summary>
</jasperReport>

6 Respostas

rdmardegam

Amigo tente fazer assim:

JasperFillManager.fillReportToFile("c:/users/vitor/report3.jasper", parameters, new JRBeanCollectionDataSource(reports));  
    JasperViewer.viewReport("report3.jrprint", false);

Acredito que não irá funcionar, mas tente hehe.

Eu n consegui gerar um jrxml a partir do seu xml. Se vc puder enviar o arquivo para que possa dar uma olhada.

Tente ver se todos os fields que você declarou estão coerentes com a tipagem declarada no java. Veja se n existe nenhum cast sendo efetuado no Ireport.

No pior do casos, tente criar uma classe com todos atributos String e popula-lo !! Declare td tb como string no ireport e veja se funfa.

Qualquer coisa fala ae, abraço

V

bom rdmardegam, gerando o JRBeanCollectionDataSource diretamente não adiantou.

Segue anexado o jrxml gerado pelo iReport.

Todos os fields estão coerentes, vou tentar criar a classe soh com strings, e posto com o resultado.

Valeu a ajuda!

V

é, o erro se manteve, passar tudo pra string não adiantou… mais alguma ideia??

valeu!

rdmardegam

Amigo vc está fazendo assim:

JasperViewer.viewReport("report3.jrprint", false);

Mas este report3.jrprint você está granvando em algum lugar?

Tente fazer assim:

JasperPrint jp =JasperFillManager.fillReportToFile("c:/users/vitor/report3.jasper", parameters, jrRS); 
JasperViewer.viewReport(jp , false);

Vi que seu jrxml talvez precise de algumas alterações ! Como deixar so a banda Detail e CollumHead.

Talvez vc tenha algum problema com os gets do

Date lPendingCreationDate;

Date lDeniedCreationDate;

Se isso ocorrer tente mudar o nome dos atributos desta classe para algum nome em que a segunda letra nao seja maiuscula.

Bom qualquer coisa p faciliar, me add no msn blz, abraço.
[email removido]

V

Valeu rdmardegam, agora resolvi!

os getters e setters estavam problematicos mesmo, mas depois de arrumar, continuou dando o mesmo erro. Depois disso eu parei de compilar pelo iReport e comecei a usar

JasperReport jr = JasperCompileManager.compileReport("c:/users/vitor/report3.jrxml");
JasperFillManager.fillReportToFile(jr, "report3.jrprint", parameters, jrRS);

funcionou perfeitamente!
muito obrigado pela ajuda!!

rdmardegam

Blz entao cara !! Show de bola, precisando ae so falar !! Abraço

Criado 23 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 6
Participantes 2