2010-11-24 32 views
3

iReportで作成した.jrprintファイルをエクスポートしました。 今レポートをプレビューして最後に印刷したいのですが、どうすればいいですか?JasperReport、レポートの表示と印刷

私がしようとしている:

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を印刷したい場合は、*(JasperReportファイルでfillReportを呼び出す必要があり.jasper )。

あなたはPDFファイルを取得したい場合は、以下のソースを使用することがあります。

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

jpがここにあなたの* .jrprintファイルです。

+0

Huh?ジャスパーから始まったばかりで、そこには詳細が不十分です。 – Kieveli

6

JasperReportファイルではなく、JasperPrintファイルを指定しています。

  • report.jrxml - ジャスパーレポートのxml定義 - これはレポートを定義しますが、出力を生成するために直接使用することはできません。
  • report.jasper - コンパイル済みのjrxmlファイル(JasperReport)。これを入力として使用して、レポートでデータを入力することができます。
  • report.jprint - データで満たされていたレポート、および

複数の出力形式にエクスポートする準備ができているここで、設計者が印刷されたPDFファイルにあなたを取得するために作成されますjrxmlファイルから開始するためにいくつかのコードがあります出力:

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

は、FillManagerはJasperReportからJasperPrintを取得するには、それはjrxmlからJasperReportを取得するために、コンパイルを使用して注意してください、そして最終的にPDFにJasperPrintをエクスポートします。

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

あなたは、レポートをプレビューし、それを印刷するジャスパー・ビューアを使用することができます。

ここに例を示します。

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"); 
} 
} 
関連する問題