JasperReport, показать и распечатать отчет - PullRequest
3 голосов
/ 24 ноября 2010

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

Я пытаюсь:

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

Ответы [ 4 ]

6 голосов
/ 28 января 2013

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

  • report.jrxml - XML-определение отчета jasper - оно определяет отчет, но не может использоваться непосредственно для генерации вывода.
  • 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.

3 голосов
/ 17 декабря 2014

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

Вот пример!

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");
} 
}
2 голосов
/ 25 мая 2011

если вы хотите напечатать 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 голосов
/ 29 января 2014

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

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