iReport: creare report in Java utilizzando un Editor Visuale

In questo post vedremo come creare dei report utilizzando un editor visuale e di facile utilizzo quale iReport. Questo tool, basato sulle librerie di JasperReports (per una panoramica si veda questo articolo),  permette di creare report compatibili con il formato JRXML di JasperReports senza però dover conoscere la sintassi XML che ne è alla base, ma semplicemente utilizzando delle funzionalità di Drag and Drop e di editing di proprietà.

Per iniziare scarichiamo il tool dall’indirizzo:

http://jasperforge.org/website/ireportwebsite/IR%20Website/ir_download.html?header=project&target=ireport

dove è possibile scegliere la versione a seconda del proprio S.O., per questo articolo ho utilizzato la versione Other Platform, cioè quella valida per tutti i tipi di S.O. (o per essere precisi quelli per i quali esiste una JVM 🙂 ) visto che non necessità di installazione ma può essere lanciata tramite gli eseguibili forniti.

L'interfaccia del tool

La schermata principale ci suggerisce già quali sono i passi per poter creare un report:

  1. Creare una sorgente dati (da un database, da un file xml, ecc.);
  2. Creare un nuovo report utilizzando il wizard o creandone uno totalmente nuovo;
  3. Visualizzare l’anteprima del report ed esportare il file JRXML o JASPER.

Nell’esempio che faremo utilizzeremo una connessione ad un DB (MySql ma è indifferente il DB utilizzato), nel quale è presente una tabella di nome Regione nella quale sono presenti dei dati riguardanti le regioni italiane quali il numero di abitanti, il numero di province e il numero di comuni.

CREATE TABLE `regioni` (
`id_regione` smallint(6) NOT NULL AUTO_INCREMENT,
`regione` varchar(50) NOT NULL,
`num_residenti` int(11) DEFAULT NULL,
`num_comuni` int(11) DEFAULT NULL,
`num_province` int(11) DEFAULT NULL,
PRIMARY KEY (`id_regione`)
)

Trovate il dump MySql del database a questo indirizzo:

http://www.appuntisoftware.it/codeexamples/scriptSQL/DBRegioni.sql

Per iniziare clicchiamo sul passo 1 per creare una sorgente dati, in questo caso una connessione al DB MySql:

Creiamo una nuova sorgente dati

clicchiamo su Database JDBC connection e poi su Avanti, dovremo poi inserire i parametri della nostra connessione in questa finestra:

Inseriamo i parametri della connessione JDBC

facciamo prima click su Prova e se tutto va a buon fine salviamo.

Clicchiamo ora su File -> Nuovo per poter creare un nuovo report:

Scegliamo il template del nostro Report

Scegliamo come template quello con nome “Blank A4”  dopo di che possiamo cliccare o su Open this Template o su Launch Report Wizard. Con Open this template ci verrà chiesto solo con che nome e dove salvare il report, mentre col wizard possiamo indicare quale query andremo ad effettuare, quali campi utilizzare e

Scegliamo di utilizzare il Wizard (anche se possiamo indicare la nostra query anche partendo da un template vuoto), ed inseriamo il nome e dove salvare il report generato:

Indichiamo dove e con che nome salvare il report

Indichiamo dove e con che nome salvare il report

clicchiamo su Avanti e nella schermata che si aprirà, clicchiamo su Design Query:

Creiamo la nostra Query SQL

nel pannello che si aprirà selezioniamo la tabella (o le tabelle) che vogliamo utilizzare per la nostra query facendo doppio click su di essa, questa verrà aperta nel pannello a destra: qui possiamo scegliere quale campo utilizzare ed eventualmente aggiungere dei filtri. Clicchiamo su Ok per chiudere il pannello e poi su Avanti. Nella schermata successiva ci verrà chiesto quali campi includere nel nostro esempio:

Selezioniamo i campi della tabella da includere nel report

Ci verrà poi chiesto se vogliamo creare dei gruppi per i nostri record (utilizzando delle clausole Group By), tralasciamo questo passo andando avanti.

Una volta finito, ci ritroveremo con un foglio bianco diviso in sezioni mentre sul lato destro nel Report Inspector possiamo vedere i campi che abbiamo scelto sotto la voce “Campi”:

Il nostro report per il momento ancora vuoto

Se switchiamo nel tab XML, possiamo vedere il codice XML generato, in particolare possiamo vedere la nostra query ed i campi selezionati con il loro tipo(Integer, String, ecc.):

<queryString language="SQL">
<![CDATA[SELECT
regioni.`id_regione` AS regioni_id_regione,
regioni.`regione` AS regioni_regione,
regioni.`num_residenti` AS regioni_num_residenti,
regioni.`num_comuni` AS regioni_num_comuni,
regioni.`num_province` AS regioni_num_province
FROM
`regioni` regioni]]>
</queryString>
<field name="regioni_id_regione" class="java.lang.Integer"/>
<field name="regioni_regione" class="java.lang.String"/>
<field name="regioni_num_residenti" class="java.lang.Integer"/>
<field name="regioni_num_comuni" class="java.lang.Integer"/>
<field name="regioni_num_province" class="java.lang.Integer"/>

Iniziamo a personalizzare il nostro report portando gli elementi disponibili sotto la voce Campi sulla sezione Detail, una volta rilasciati i campi sulla sezione verrà creata anche una voce corrispondente nella sezione “Testata di colonna”, in altre parole viene creata in automatico il nome della colonna della nostra tabella di elementi. Come nome del campo di testata verrà proposto il nome del campo prelevato dal Db, quindi ridenominiamolo con un nome più significativo:

Inseriamo un campo e modifichiamo il nome di testata

Inseriamo tutti i campi rimanenti in modo da allinearli a sinistra. Un metodo molto più veloce è quello di selezionare tutti i campi ed inserirli nella sezione, sarà l’IDE a posizionarli e ad allinearli in modo da occupare tutto lo spazio orizzontale:

Inseriamo tutti i campi che abbiamo selezionato dalla tabella

Miglioriamo la visualizzazione dei numeri allineandoli a destra (andando nel pannello Proprietà e impostando allineamento orizzontale uguale a destra)  e mostrando il punto per i decimali. Per fare quest’ultima operazione andiamo sul pannello Proprietà cerchiamo la voce pattern e clicchiamo sull’iconcina … :

Definiamo un pattern per la visualizzazione dei nostri numeri

Ora non ci resta che restringere le bande delle nostre sezioni, possiamo farlo rapidamente facendo doppio click sull’estremo inferiore di ogni banda:

Restringiamo le bande di ogni sezione

Adesso possiamo visualizzare una anteprima del nostro report cliccando sul tab Anteprima:

Un'anteprima del nostro report

Proviamo ora ad inserire un grafico a barre: andiamo sul Pannello Palette (se non è visualizzato a lato del nostro pannello principale andiamo in Finestra -> Palette oppure digitiamo Ctrl+Maiusc+8), e clicchiamo sul componente Graifico trascinandolo sulla sezione Titolo, appare una finestra per scegliere il tipo di grafico da utilizzare:

Realizziamo un grafico per il nostro report

Scegliamo un grafico a barre 3D e clicchiamo su Ok, si aprirà una finestra che ci chiede il dataset, lasciamo come da default e proseguiamo con Avanti. La schermata successiva ci chiede la Serie (utile se avessimo dei dati classificati per Anni o Mesi), per il nostro esempio ne esiste una sola dunque possiamo scrivere una semplice frase tra apici come “Numero di residenti per Regione”, clicchiamo avanti:

Inseriamo un nome per la nostra unica serie

La schermata successiva ci chiede l’espressione per la categoria (i valori visualizzati lungo l’asse delle X), che saranno i nomi delle nostre regioni el’espressione per i valori (i valori visualizzati lungo l’asse delle y), che saranno i valori numerici dei residenti. Per riempire questi campi facciamo click sull’icona con la matita, si aprirà un pannello da dove sceglieremo le nostre espressioni, lo facciam ocliccando sui campi della nostra tabella du DB:

Selezioniamo le espressioni per la categoria e per i valori numerici

Concludiamo cliccando su Termina. Ora inseriamo il nostro grafico all’interno della sezione Titolo adattando opportunamente le sue dimensioni. Possiamo a questo punto eliminare le sezioni che non ci servono facendo click col tasto destro su di esse e poi selezionando “Cancella Banda”:

Il grafico dimensionato all'interno del nostro report

Affinché le etichette lungo l’asse delle x siano visibili (il nome delle nostre regioni) facciamo in modo di ruotarle di 45°: otteniamo questo effetto andando nel Pannello Proprietà del nostro grafico e selezionando la voce Category Axis Tick Label Rotation ed impostandola al valore  -45 gradi:

Ruotiamo le nostre etichette di 45 gradi

Otteniamo questo risultato finale:

Il nostro report al termine delle modifiche

Possiamo ovviamente cambiare il colore del grafico oppure possiamo scegliere uno dei temi predefiniti presenti all’interno del tool:

La visualizzazione del nostro grafico scegliendo il tema eye.candy.sixties

1 Stella2 Stelle3 Stelle4 Stelle5 Stelle (1 voti, media: 4,00 di 5)
Loading...
You can leave a response, or trackback from your own site.

Leave a Reply

*