2010-09-19 15 views
9

Ich machte einen Jaspis-Bericht mit iReport 3.7.4 version, jetzt muss ich das verwenden oder den Bericht in meiner Java-Anwendung aufrufen, wo ich Servlets, Jsp und Struts Framework, Apache Tomcat als Server verwenden .JasperReports: So rufen Sie den Bericht in JSP Seite

Ich möchte Schritte, wie Sie den Jaspis-Bericht mit einem Beispiel aufrufen.

Antwort

1

sollte Dieses Stück Code geben Sie eine Vorstellung, wie man es sonst

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

zu tun, die api Die erste Zeile überprüfen ommited werden, wenn Sie bereits die Datei mit iReport zusammengestellt hatte. Überprüfen Sie in diesem Fall die API für die korrekte Methode auf JasperFillManager.

8
  1. Kompilieren Sie den Bericht in iReport
  2. Platz der kompilierte Bericht über die Classpath
  3. Last mit

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream); 
    
  4. sie mit Daten füllen. dataSource ist die DataSource Instanz, die Sie haben - zum Beispiel ein BeanCollectionDataSource

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

    JRPdfExporter exporter = new JRPdfExporter(); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream); 
    exporter.exportReport(); 
    
  6. Die outputStream oben kann entweder ein response.getOutputStream() oder ein FileOutputStream(), je nachdem, ob Sie es schicken zu einem Client oder Sie möchten es als Datei speichern. Wenn Sie es an den Client senden möchten, müssen Sie die Kopfzeile und einige weitere senden, aber das hängt von dem Format ab, in dem Sie speichern möchten. Wenn Sie auf dem Client drucken möchten, ist das eine ganz andere Frage - Sie benötigen etwas clientseitigen Code, ein Applet zum Beispiel.

+0

Nach 6 Jahren seit dieser wurde gepostet [JRExport erParameter.OUTPUT_STREAM] (http://javadox.com/net.sf.jasperreports/jasperreports/5.1.0/net/sf/jasperreports/engine/JRExporterParameter.html#OUTPUT_STREAM) ist veraltet, ich habe eine [Antwort] gepostet. (http://stackoverflow.com/a/35698286/5292302) zeigt, wie diese Antwort in der aktuellen Version erreicht wird. –

1

in der ersten Antwort, Punkt 5: Nach

JRPdfExporter exporter= new JRPdfExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

0

hinzufügen Dies ist eine andere Art und Weise das gleiche zu tun.

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

Beste Lösung (für eine bessere Leistung), ruft einen kompilierten Bericht auf.

Sie das folgende Beispiel
sehen

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

Nach 6 Jahren @Bozho answer jetzt (v5 und v6) enthält veraltet Code auf Punkt 5 JRExporterParameter.OUTPUT_STREAM, aber ich werde versuchen, zu verbessern die anderen Punkte, während ich es bin

  1. laden Bericht

    zusammengestellt Version .jasper

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

    oder die nicht Version .jrxml zusammengestellt (langsamer, da Bedarf aber machbar zu kompilieren)

    JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml"); 
    
  2. Füllen Sie den Bericht

    mit nichts (Datenquelle innerhalb Bericht oder nur statischen Text erzeugt)

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

    mit Datenquelle:

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

    mit Datenbank Verbindung (kann die häufigste, SQL innerhalb Bericht ausgeführt)

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection); 
    
  3. Export berichten

    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. Wenn Sie zu Strom der Bericht direkt auf dem Web-Seite ist dies, wie contentType und Content-disposition gesetzt ist und wie Sie rufen die outputStream

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