Une des forces sous estimée du développement en Java est l’utilisation des librairies extérieures à ce que Sun développe. Jasper est un bon exemple.
Pour une application faite en Java, une des solutions les plus optimales de génération de rapports consiste à utiliser la librairie Jasper. À partir d’une requête (SQL par exemple) on peut produire un rapport imprimable, avec prévisualisation à l’écran, sauvegarde PDF et autres formats. L’intégration à n’importe quel code en Java se fait facilement car il s’agit seulement d’utiliser des classes.

Voici donc le code nécessaire pour charger un gabarit et afficher la prévisualisation d’impression à partir d’une requête SQL:

public void afficher_prev(String sgabarit, String requeteSQL) throws Exception {
JasperDesign gabarit = JRXmlLoader.load(sgabarit);
JasperReport rapport = JasperCompileManager.compileReport(gabarit);
JRResultSetDataSource jrRS = new JRResultSetDataSource(data.executeQuery(requeteSQL));
Map param = new HashMap();
JasperPrint printDest = JasperFillManager.fillReport(rapport, param, jrRS);
try {
PrintPreview ppDest = new PrintPreview(printDest);
ppDest = null;
}
catch (Exception exV) {
exV.printStackTrace();
}
}

Ce qui donne quelque chose comme ceci :

Prévisualisation Jasper

Il existe aussi une application complète et autonome nommée iReport qui permet de créer avec une interface graphique les gabarits des rapports (à la Crystal Reports) à produire.

Fenêtre principale de iReport

Comme toutes les bonnes choses de la vie, Jasper et iReport sont gratuits. Cependant, la documentation principale est payante et donc peu d’informations simples et directes se retrouve sur les sites qui distribuent les logiciels. Pas trop grâve, car tout bon programmeur un peu débrouillard pourra créer un rapport simple, par exemple une liste d’une des tables SQL, en moins de 10 minutes.

http://www.jasperforge.org/