2010-11-24 7 views
3

J'ai exporté un fichier .jrprint créé avec iReport. Maintenant, je veux prévisualiser le rapport et enfin l'imprimer, comment puis-je faire cela?JasperReport, afficher et imprimer le rapport

Je suis en train avec:

JRBeanCollectionDataSource ds=new JRBeanCollectionDataSource(list); 
JasperPrint jrprint=JasperFillManager.fillReport("report.jrprint", null, ds); 

Mais je cette exception

java.lang.ClassCastException: net.sf.jasperreports.engine.JasperPrint cannot be cast to net.sf.jasperreports.engine.JasperReport 

Répondre

2

si vous souhaitez imprimer un JasperReport vous devez appeler le fillReport avec un fichier JasperReport (* .jasper).

Si vous voulez obtenir un fichier PDF, vous pouvez utiliser suivant la source:

JRPdfExporter exporter = new JRPdfExporter(); 
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp); 
exporter.setParameter(JRExporterParameter.OUTPUT_FILE, outFile); 
exporter.exportReport(); 

jp est ici votre fichier * .jrprint.

+0

Huh? Je commence juste avec Jasper, et il n'y a pas assez de détails ici. – Kieveli

6

Vous spécifiez le fichier JasperPrint et non le fichier JasperReport. Permettez-moi de briser les fichiers et ce qu'ils sont:

  • report.jrxml - Une définition XML d'un rapport de jaspe - ce qui définit un rapport, mais ne peut pas être directement utilisé pour générer une sortie.
  • report.jasper - Un fichier jrxml compilé (JasperReport). Cela peut être utilisé comme entrée pour remplir le rapport avec des données.
  • report.jprint - Un rapport qui a été rempli de données, et est prêt à être exporté vers plusieurs formats de sortie

Voici un code pour commencer par le jrxml fichier le concepteur crée pour vous rendre à un imprimé pdf sortie:

Connection connection = PersistenceSessionFactory.getSqlSession().getConnection(); 
JasperReport report = JasperCompileManager.compileReport("FancyPantsReport.jrxml"); 

// setup parameters for use with the report 
HashMap<String, Object> params = new HashMap<String,Object>(); 
params.put("sqlDate", fromDate); 

// Fill the report data from the sql connection and parameters 
JasperPrint printedReport = JasperFillManager.fillReport(report, params, connection); 

String outputFilename = "FancyPants-" + dateString + ".pdf"; 
JasperExportManager.exportReportToPdfFile(printedReport, outputFilename); 

LOG.info("Report Generated in " + (System.currentTimeMillis() - start) + "ms"); 

avis qu'il utilise la compilation pour obtenir un JasperReport du jrxml, le FillManager pour obtenir un JasperPrint du JasperReport, et finalement exporte le JasperPrint en pdf.

0

Vous pouvez utiliser ce qui suit pour produire et imprimer le rapport:

JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list); 
InputStream jasperStream = YourClass.class.getResourceAsStream(TEMPLATE_BASE_PATH); 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource); 
JasperViewer viewer = new JasperViewer(jasperPrint, false); 
viewer.setVisible(true); 
3

Vous pouvez utiliser la visionneuse Jasper pour obtenir un aperçu des rapports et l'imprimer.

Voici un exemple!

public void generateReport() throws PrinterException { 

try { 
String sourceFileName = "src/bill/report.jasper"; 
String printFileName = null; 
Purchase_BeanFactory DataBean = new Purchase_BeanFactory(); 
JRBeanCollectionDataSource beanColDataSource = new  JRBeanCollectionDataSource(DataBean.generateCollection()); 
Map parameters = new HashMap(); 
printFileName = JasperFillManager.fillReportToFile(
    sourceFileName, 
    parameters, 
    beanColDataSource); 

JasperViewer jv=new JasperViewer("src/bill/report.jrprint", false, false); 

//set title for the jasper viewer 
jv.setTitle("Your Title"); 

jv.setVisible(true); 
//set icon to the jasper viewer 
jv.setIconImage(
(new 
ImageIcon(getClass().getResource("path/to/image.png")).getImage())); 

} catch (Exception e) { 
System.out.println("e"); 
} 
} 
Questions connexes