eclipse

JasperReports

Utilisation de la librairie JasperReports

Dans cette partie, je vais vous montrer comment utiliser la librairie JasperReports au travers de deux exemples, le premier utilisant une base de données et le second utilisant un fichier XML comme source de données.

Avec une base de données

// Configuration de la source de données :
Class.forName("org.hsqldb.jdbcDriver");
Connection connection = DriverManager.getConnection("jdbc:hsqldb:hsql:localhost","sa","sa");

// Remplissage du rapport compilé :
JasperPrint print = JasperFillManager.fillReport("modeleBDD.jasper", null, connection);

// Visualisation, exportation ou impression 
JasperViewer.viewReport(print);
JasperExportManager.exportReportToPdfFile(print, "export.pdf");
JasperExportManager.exportReportToHtmlFile(print, "export.html");
JasperPrintManager.printReport(print, true);
			

Dans l'exemple ci-dessus, nous vérifions l'existence du Driver notre Build Path puis nous récupérons la connection sur notre base de données. Ensuite, nous remplissons le rapport à l'aide de la méthode fillReport de la classe JasperFillManager. Cette méthode prend 3 arguments, le premier peut être le nom d'un fichier .jasper directement ou un objet JasperDesign par exemple. Le second argument est une Map<String,Object> de paramètres qui pourront être utilisés au sein du rapport (à condition d'avoir été définis dans le modèle). Enfin, le dernier argument concerne la source de données. Cet argument peut donc être une Connection comme on l'utilise ici mais d'autres possibilités existent comme une Collection ou une Array de Beans par exemple (en utilisant les classes JRBeanCollectionDataSource et JRBeanArrayDataSource notamment).
Enfin, les dernières lignes permettent au choix de visualiser, d'exporter ou d'imprimer le rapport. Pour la méthode printReport, le second argument indique si l'on veut passer par la boîte de dialogue d'impression du système d'exploitation ou non.


Avec un fichier XML

// Remplissage du rapport compilé :
JasperPrint print = JasperFillManager.fillReport("modeleXML.jasper", null, new JRXmlDataSource("northwind.xml", "/Northwind/Customers"));

// Visualisation, exportation ou impression 
JasperViewer.viewReport(print);
JasperExportManager.exportReportToPdfFile(print, "export.pdf");
JasperExportManager.exportReportToHtmlFile(print, "export.html");
JasperPrintManager.printReport(print, true);
			

Lorsqu'on utilise un fichier XML comme source de données, nous utilisons la classe JRXmlDataSource dont le constructeur prend 2 arguments, le premier correspond au fichier XML qui contient les données et le second argument correspond à la requête XPathXPath est un langage (non XML) pour localiser une portion d'un document XML.. Dans cette exemple, notre fichier XML northwind.xml possède la structure suivante :

Northwind
	Customers
		...
	Customers
		...
	Customers
		...
			

Vous pouvez retrouver les exemples précédents dans cette archive : exemples.zip (Projet à importer sous Eclipse)


Conclusion >>>