2010-09-19 5 views
9

J'ai fait un rapport jasper en utilisant iReport 3.7.4 version, maintenant je dois l'utiliser ou appeler ce rapport dans mon application java où j'utilise des servlets, jsp et struts framework, apache tomcat comme serveur .JasperReports: comment appeler le rapport en jsp page

Je veux des étapes sur la façon d'appeler le rapport jasper avec quelques exemples.

Répondre

1

Ce morceau de code devrait vous donner une idée sur la façon de le faire

JasperReport jr=JasperCompileManager.compileReport("yourJRXMLFilePath"); 
JasperPrint jrPrint = JasperFillManager.fillReport(jr,mapWithParameters,aJRDataSource); 
JasperExportManager.chooseYourFavoriteMethod(jrPrint,"destinationFile"); 

Sinon, vérifiez la api La première ligne peut être ommited si vous aviez déjà compilé le fichier avec iReport. Vérifiez l'API pour la méthode correcte sur JasperFillManager dans ce cas.

8
  1. le rapport Compile iReport
  2. Placez le rapport compilé sur le classpath
  3. charge avec

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream); 
    
  4. Remplissez-le avec des données. dataSource est l'instance que vous avez DataSource - par exemple un BeanCollectionDataSource

    JasperPrint jasperPrint = 
        JasperFillManager.fillReport(jasperReport, params, dataSource); 
    
  5. exporter

    JRPdfExporter exporter = new JRPdfExporter(); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); 
    exporter.exportReport(); 
    
  6. Le outputStream ci-dessus peut être un response.getOutputStream() ou un FileOutputStream(), selon que vous voulez envoyer à un client ou vous voulez le stocker en tant que fichier. Si vous voulez l'envoyer au client, vous devez envoyer l'en-tête Content-Disposition, et un peu plus, mais cela dépend du format que vous voulez enregistrer. Dans le cas où vous voulez imprimer sur le client, c'est une question assez différente - vous auriez besoin d'un code côté client, une applet, par exemple.

+0

Après 6 ans depuis que ceci a été posté [JRExport erParameter.OUTPUT_STREAM] (http://javadox.com/net.sf.jasperreports/jasperreports/5.1.0/net/sf/jasperreports/engine/JRExporterParameter.html#OUTPUT_STREAM) a été abandonné, j'ai posté un [réponse] (http://stackoverflow.com/a/35698286/5292302) pour montrer comment cette réponse est obtenue dans la version actuelle. –

1

dans la première réponse, point 5: Après

JRPdfExporter exporter= new JRPdfExporter();

ajouter

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

0

Ceci est une autre façon de faire la même chose.

JasperReport jasperReport; 
    JasperPrint jasperPrint; 
    Map<String, Object> param = new HashMap<String, Object>(); 
    try{ 
     String sourceFileName = ".jrxml"; 
     jasperReport = JasperCompileManager.compileReport(sourceFileName); 
     jasperPrint = JasperFillManager.fillReport(jasperReport,param,new JRBeanCollectionDataSource(getDetails())); 
     JasperExportManager.exportReportToPdfFile(jasperPrint, ".pdf"); 
    } 
    catch(Exception e){ 
    } 
1

La meilleure solution (pour de meilleures performances aussi), appellera un rapport compilé.

vous pouvez voir l'exemple ci-dessous

import java.io.IOException; 
import java.util.HashMap; 

import net.sf.jasperreports.engine.JREmptyDataSource; 
import net.sf.jasperreports.engine.JRException; 
import net.sf.jasperreports.engine.JasperExportManager; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperPrint; 

public class PdfFromJasperFile { 
    public static void main(String[] args) throws JRException, IOException { 

    JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", new HashMap<String, Object>(), 
    new JREmptyDataSource()); 
    JasperExportManager.exportReportToPdfFile(jasperPrint, "sample.pdf"); 

    } 
} 
4

Après 6 ans @Bozho answer maintenant (versions 5 et 6) contient le code dépréciée sur le point 5 JRExporterParameter.OUTPUT_STREAM, mais je vais essayer d'améliorer les autres points pendant que je suis là

  1. Chargez le rapport

    compilé la version .jasper

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream); 
    

    ou non compilé la version .jrxml (plus lent depuis le besoin de compiler mais faisable)

    JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml"); 
    
  2. Remplissez le rapport

    avec rien (source de données générée à l'intérieur rapport ou tout simplement du texte statique)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params); 
    

    avec datasource:

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource); 
    

    avec base de données connexion (peut, sql la plus courante exécutée à l'intérieur rapport)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection); 
    
  3. Exporter le rapport

    JRPdfExporter exporter = new JRPdfExporter() 
    exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); 
    exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream)); 
    SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration(); 
    configuration.setMetadataAuthor("Petter"); //Set your pdf configurations, 
    exporter.setConfiguration(configuration); 
    exporter.exportReport(); 
    
  4. Si vous aimez flux le rapport directement à la page web voici comment contentType et Content-disposition est défini et comment vous récupérez la outputStream

    response.setContentType("application/x-pdf"); 
    response.setHeader("Content-disposition", "inline; filename=myReport.pdf"); 
    OutputStream outputStream = response.getOutputStream(); 
    
Questions connexes