2010-11-24 5 views
3

Я экспортировал файл .jrprint, созданный с помощью iReport. Теперь я хочу просмотреть отчет и, наконец, распечатать его, как я могу это сделать?Отчет JasperReport, show and print

Пытаюсь с:

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

Но у меня есть это исключение

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

ответ

2

если вы хотите напечатать JasperReport вы должны вызвать fillReport с файлом JasperReport (* .jasper).

Если вы хотите, чтобы получить файл в формате PDF вы можете использовать следующие источники:

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

JP здесь ваш * .jrprint файл.

+0

Да? Просто начиная с Джаспера, и здесь не хватает подробностей. – Kieveli 2013-01-28 15:05:16

6

Вы указываете файл JasperPrint, а не файл JasperReport. Позвольте мне разбить файлы и то, что они:

  • report.jrxml - An определение XML отчета яшмы - это определяет отчет, но не может быть непосредственно использован для создания вывода.
  • report.jasper - скомпилированный файл jrxml (JasperReport). Это можно использовать в качестве входных данных для заполнения отчета данными.
  • report.jprint - отчет, который был заполнен данными, и готов экспортировать в нескольких форматах вывода

Вот код, чтобы начать с jrxml файла дизайнер создает, чтобы получить Вас к напечатанному PDF выход:

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"); 

Обратите внимание, что использует компиляцию, чтобы получить JasperReport от jrxml, то FillManager получить JasperPrint от JasperReport, и, наконец, экспортирует JasperPrint в формате PDF.

0

Вы можете использовать следующие для получения и печати отчета:

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

Вы можете использовать для просмотра Jasper для просмотра отчетов и печати.

Вот пример!

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"); 
} 
}