Creare report con modello XML in Java : Jasper Report
Un’introduzione a questa interessante libreria che ci permette di creare dei report personalizzati.
Creazione modello
JasperReport è una libreria scritta in Java che ci permette di creare dei report in maniera semplice e, sopratutto, che possiamo automatizzare. Poter creare dei report è interessante per molte attività, soprattutto è interessante avere diversi formati di report e poter crearli dinamicamente, magari con una connessione al DB.
Tutto ciò ci viene fornito da questa libreria. Prima di tutto dobbiamo fornire a JasperReport un modello sul quale creare i documenti di nostro interesse. Quello che segue è l’esempio di un semplice modello da utilizzare
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="Modello" > <parameter name="Titolo" class="java.lang.String"/> <queryString> <![CDATA[select giocatore, voto from risultati]]> </queryString> <field name="giocatore" class="java.lang.String"/> <field name="voto" class="java.lang.Double"/> <title> <band height="50"> <textField> <reportElement x="0" y="0" width="200" height="50" /> <textFieldExpression class="java.lang.String"> $P{Titolo} </textFieldExpression> </textField> </band> </title> <pageHeader> <band> </band> </pageHeader> <columnHeader> <band height="20"> <staticText> <reportElement x="180" y="0" width="180" height="20"/> <textElement> <font isUnderline="true"/> </textElement> <text><![CDATA[giocatore]]></text> </staticText> <staticText> <reportElement x="360" y="0" width="180" height="20"/> <textElement> <font isUnderline="true"/> </textElement> <text><![CDATA[voto]]></text> </staticText> </band> </columnHeader> <detail> <band height="20"> <textField> <reportElement x="180" y="0" width="180" height="20"/> <textFieldExpression class="java.lang.String"> <![CDATA[$F{giocatore}]]> </textFieldExpression> </textField> <textField pattern="0.00"> <reportElement x="360" y="0" width="180" height="20"/> <textFieldExpression class="java.lang.Double"> <![CDATA[$F{voto}]]> </textFieldExpression> </textField> </band> </detail> <columnFooter> <band> </band> </columnFooter> <summary> <band> </band> </summary> </jasperReport> |
Cosi facendo abbiamo creato un modello per le statistiche riguardanti i giocatori e i voti del fantacalcio che magari gestiamo attraverso un programma che memorizza su database. Come potete vedere c’è la definizione di una query SQL che richiama i valori di giocatori e voti da un DB.
Creazione Report
Ora che abbiamo il modello per i nostri report, andremo ad utilizzare JasperReport per generare il documento finale. Quello che ci rimane da fare è stabilire che tipo di file vogliamo avere in output. In questo caso stamperemo il report PDF. Ecco come fare
1 2 3 4 5 6 7 8 9 10 11 12 13 |
JasperDesign jasperDesign = JasperManager.loadXmlDesign("modello.xml"); JasperReport jasperReport = JasperManager.compileReport(jasperDesign); Map parameters = new HashMap(); parameters.put("ReportTitle", "Report"); parameters.put("VotoMassimo", new Double(10.00)); Connection conn = Database.getConnection(); JasperPrint jasperPrint = JasperManager.fillReport(jasperReport, parameters, conn); JasperManager.printReportToPdfFile(jasperPrint, "Report.pdf"); |
Come potete vedere dal codice abbiamo dovuto settare solo qualche variabile, collegarsi al DB e creare il nostro file PDF. Niente di più semplice!!
http://jasperreports.sourceforge.net