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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
| package rapports;
import java.io.File;
import java.net.URL;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
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() throws SQLException {
// exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
String url = "jdbc:mysql://localhost/jasper_database";
String login = "root";
String password = "";
Driver monDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(monDriver);
Connection conn = (Connection) DriverManager.getConnection(url, login, password);
System.out.println("connexion");
// Connection conn = .... ; // la connexion à la base de données
Map<String, Object> params = new HashMap<String, Object>();
params.put("id_equipement",123);
new ImprJasper("report3", conn, "PDF", params, "d:/kika.pdf");
}
public static void main(String []args) throws SQLException{
// exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
String url = "jdbc:mysql://localhost/jasper_database";
String login = "root";
String password = "";
Driver monDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(monDriver);
Connection conn = (Connection) DriverManager.getConnection(url, login, password);
System.out.println("connexion");
// Connection conn = .... ; // la connexion à la base de données
Map<String, Object> params = new HashMap<String, Object>();
params.put("titre","titre");
new ImprJasper("report3", conn, "PDF", params, "d:/kika.pdf");
}
} |
Partager