JasperReports - Disegni
I modelli JRXML (o file JRXML) in JasperReport sono file XML standard, con estensione .jrxml. Tutti i file JRXML contengono il tag <jasperReport>, come elemento root. Questo a sua volta contiene molti sottoelementi (tutti questi sono opzionali). Il framework JasperReport può gestire diversi tipi di origini dati. In questo tutorial, mostreremo come generare un report di base, semplicemente passando una raccolta di oggetti dati Java (utilizzando Java bean), al motore JasperReport. Il rapporto finale mostra un elenco di persone con le categorie inclusi i loro nomi e paesi.
I passaggi seguenti sono trattati in questo capitolo per descrivere - come progettare un JasperReport -
- Creazione di un modello di report JRXML e.
- Anteprima del modello di report XML.
Creazione di un modello di rapporto JRXML
Crea il file JRXML, che è jasper_report_template.jrxmlutilizzando un editor di testo e salvare questo file in C: \ tools \ jasperreports-5.0.1 \ test come da configurazione dell'ambiente.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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 = "jasper_report_template" language = "groovy" pageWidth = "595"
pageHeight = "842" columnWidth = "555" leftMargin = "20" rightMargin = "20"
topMargin = "20" bottomMargin = "20">
<queryString>
<![CDATA[]]>
</queryString>
<field name = "country" class = "java.lang.String">
<fieldDescription><![CDATA[country]]></fieldDescription>
</field>
<field name = "name" class = "java.lang.String">
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<columnHeader>
<band height = "23">
<staticText>
<reportElement mode = "Opaque" x = "0" y = "3" width = "535"
height = "15" backcolor = "#70A9A9" />
<box>
<bottomPen lineWidth = "1.0" lineColor = "#CCCCCC" />
</box>
<textElement />
<text><![CDATA[]]> </text>
</staticText>
<staticText>
<reportElement x = "414" y = "3" width = "121" height = "15" />
<textElement textAlignment = "Center" verticalAlignment = "Middle">
<font isBold = "true" />
</textElement>
<text><![CDATA[Country]]></text>
</staticText>
<staticText>
<reportElement x = "0" y = "3" width = "136" height = "15" />
<textElement textAlignment = "Center" verticalAlignment = "Middle">
<font isBold = "true" />
</textElement>
<text><![CDATA[Name]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height = "16">
<staticText>
<reportElement mode = "Opaque" x = "0" y = "0" width = "535"
height = "14" backcolor = "#E5ECF9" />
<box>
<bottomPen lineWidth = "0.25" lineColor = "#CCCCCC" />
</box>
<textElement />
<text><![CDATA[]]> </text>
</staticText>
<textField>
<reportElement x = "414" y = "0" width = "121" height = "15" />
<textElement textAlignment = "Center" verticalAlignment = "Middle">
<font size = "9" />
</textElement>
<textFieldExpression class = "java.lang.String">
<![CDATA[$F{country}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x = "0" y = "0" width = "136" height = "15" />
<textElement textAlignment = "Center" verticalAlignment = "Middle" />
<textFieldExpression class = "java.lang.String">
<![CDATA[$F{name}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Di seguito sono riportati i dettagli dei campi principali nel modello di rapporto sopra riportato:
<queryString> - Questo è vuoto (poiché stiamo passando i dati tramite Java Beans). Di solito contiene l'istruzione SQL, che recupera il risultato del report.
<nome campo>: questo elemento viene utilizzato per mappare i dati da origini dati o query nei modelli di report. name viene riutilizzato nel corpo del report e distingue tra maiuscole e minuscole.
<fieldDescription> - Questo elemento mappa il nome del campo con l'elemento appropriato nel file XML.
<staticText>: definisce il testo statico che non dipende da origini dati, variabili, parametri o espressioni di report.
<textFieldExpression>: definisce l'aspetto del campo del risultato.
$ F {paese} - Questa è una variabile che contiene il valore del risultato, campo predefinito nel tag <nome campo>.
<band> - Le bande contengono i dati, che vengono visualizzati nel report.
Una volta che il progetto del report è pronto, salvarlo nella directory C: \.
Anteprima del modello di report XML
C'è un'utilità net.sf.jasperreports.view.JasperDesignViewer disponibile nel file JAR JasperReports, che aiuta a visualizzare in anteprima il progetto del report senza doverlo compilare o riempire. Questa utility è un'applicazione Java standalone, quindi può essere eseguita utilizzando ANT.
Scriviamo un target ANT viewDesignXMLper visualizzare JRXML. Quindi, creiamo e salviamobuild.xmlnella directory C: \ tools \ jasperreports-5.0.1 \ test (dovrebbe essere posizionato nella stessa directory in cui si trova JRXML). Ecco il file build.xml -
<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewDesignXML" basedir = ".">
<import file = "baseBuild.xml" />
<target name = "viewDesignXML" description = "Design viewer is
launched to preview the JXML report design.">
<java classname = "net.sf.jasperreports.view.JasperDesignViewer" fork = "true">
<arg value = "-XML" />
<arg value = "-F${file.name}.jrxml" />
<classpath refid = "classpath" />
</java>
</target>
</project>
Quindi, apriamo un prompt dei comandi e andiamo alla directory in cui si trova build.xml. Esegui il comandoant(Poiché viewDesignXML è la destinazione predefinita). L'output è il seguente:
C:\tools\jasperreports-5.0.1\test>ant
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml
viewDesignXML:
[java] log4j:WARN No appenders could be found for logger
(net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
[java] log4j:WARN Please initialize the log4j system properly.
L'avviso di Log4j può essere ignorato e, come risultato dell'esecuzione sopra, si apre una finestra denominata "JasperDesignViewer", che mostra l'anteprima del nostro modello di report.
Come si vede, vengono visualizzate solo le espressioni del report per ottenere i dati, poiché JasperDesignViewer non ha accesso all'origine dati effettiva o ai parametri del report. Termina il JasperDesignViewer chiudendo la finestra o premendo Ctrl-c nella finestra della riga di comando.