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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
package rapports;
import java.io.File;
import java.net.URL;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
/**
* Petite classe utilitaire pour lancer une impression d'un état JasperReport
* On suppose que cette classe est placée avec les différents rapports dans le package "rapports".
*/
public class ImprJasper {
/**
* @param nomDuRapport Le nom du rapport sans son extension .jasper
* @param conn La connexion java.sql à la base de donnée
* @param formatSortie "Aperçu","Imprimante","Tableur","HTML","PDF"
* @param params Map des différents paramètres passés au rapport (ID_CLIENT par exemple) pour utilisation par le rapport
* @param cheminFichierDeSortie chemin complet (avec extension) du fichier de sortie (HTML, Tableur, PDF). Indiquer null si Aperçu ou Imprimante
*/
public ImprJasper(String nomDuRapport, Connection conn, String formatSortie, Map<String, Object> params, String cheminFichierDeSortie){
params.put("SUBREPORT_DIR", "rapports/"); // on suppose que le package dans lequel se trouve le rapport est nommé "rapports"
URL cheminRapport = getClass().getResource(nomDuRapport + ".jasper");
try {
// chargement du rapport :
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(cheminRapport);
// suppression de la pagination si format HTML (sinon on est au format A4 !!!)
if (formatSortie.equals("HTML")) {
params.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
}
// calcul et mise en page du rapport avec utilisation des paramètres et de la connexion
// l'objet jasperPrint contient le résultat
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, conn);
// si le format de sortie est "Aperçu", le résultat est placé dans un JFrame (JasperViewer) qui fait un EXIT_ON_CLOSE par défaut
// il faut donc passer le paramètre false pour empêcher l'arrêt de l'application après un aperçu
if (formatSortie.equals("Aperçu")) {
final JasperViewer Jv = new JasperViewer(jasperPrint,false); // le false empèche l'arrêt de l'application
}
if (formatSortie.equals("PDF")) {
JasperExportManager.exportReportToPdfFile(jasperPrint, cheminFichierDeSortie);
}
// pour exporter au format HTML JasperExportManager crée un sous répertoire.
// en cas de ré-exportation du rapport, il faut supprimer le sous-répertoire sinon ça plante
if (formatSortie.equals("HTML")) {
String NomRepHtml = cheminFichierDeSortie.subSequence(0, cheminFichierDeSortie.lastIndexOf(".")) + "_files";
File RepHtm = new File(NomRepHtml);
if (RepHtm.exists()) {
File[] Fichiers = RepHtm.listFiles();
for (File fichier : Fichiers) {
fichier.delete();
}
}
RepHtm.delete();
JasperExportManager.exportReportToHtmlFile(jasperPrint, cheminFichierDeSortie);
}
if (formatSortie.equals("Imprimante")) JasperPrintManager.printReport(jasperPrint,false);
if (formatSortie.equals("Tableur")) {
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, cheminFichierDeSortie);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.exportReport();
}
}
catch (JRException ex) {
ex.printStackTrace();
}
}
public void testImpression() {
// exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
Connection conn = .... ; // la connexion à la base de données
Map<String, Object> params = new HashMap<String, Object>();
params.put("id_equipement",123);
new ImprJasper("interventions", conn, "PDF", params, "c:/Users/MaPomme/kika.pdf");
}
} |