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

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>

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

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!

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

valeu!

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.
rdmardegam@hotmail.com

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!!

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