我使用iReport 3.7.4 version
發佈了一個jasper報告,現在我必須在我的java應用程序中使用那個報告或者在那裏使用servlet,jsp和struts框架,apache tomcat作爲服務器。JasperReports:如何在jsp頁面中調用報告
我想了解如何使用一些示例調用jasper報告。
我使用iReport 3.7.4 version
發佈了一個jasper報告,現在我必須在我的java應用程序中使用那個報告或者在那裏使用servlet,jsp和struts框架,apache tomcat作爲服務器。JasperReports:如何在jsp頁面中調用報告
我想了解如何使用一些示例調用jasper報告。
這段代碼應該給你如何做到這一點
JasperReport jr=JasperCompileManager.compileReport("yourJRXMLFilePath");
JasperPrint jrPrint = JasperFillManager.fillReport(jr,mapWithParameters,aJRDataSource);
JasperExportManager.chooseYourFavoriteMethod(jrPrint,"destinationFile");
否則,請檢查api 如果你已經編譯iReport的文件的第一行可以中省略了一些想法。在這種情況下,在JasperFillManager上檢查API的正確方法。
負載它
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
填充數據。 dataSource
是你有DataSource
實例 - 例如BeanCollectionDataSource
JasperPrint jasperPrint =
JasperFillManager.fillReport(jasperReport, params, dataSource);
導出
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
exporter.exportReport();
的outputStream
上面可以是response.getOutputStream()
或FileOutputStream()
,這取決於你是否要發送到客戶端,或者您想將其存儲爲文件。如果您想將其發送給客戶端,則必須發送Content-Disposition
標題等等,但這取決於您要保存的格式。如果你想在客戶端上打印打印,這是一個完全不同的問題 - 例如,你需要一些客戶端代碼,一個小程序。
,5點:
JRPdfExporter exporter= new JRPdfExporter();
後添加
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
這是做同樣的方式不同。
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){
}
最好的解決方案(爲了更好的表現,以及),將調用一個編譯的報告。
你可以看到下面
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");
}
}
的例子經過6年的@Bozho answer現在(V5和V6)包含在5點 JRExporterParameter.OUTPUT_STREAM棄用代碼,但我會盡力改善當我在其中時的其他點
負載報告
編譯版本.jasper
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);
或非編譯版本.jrxml
(更慢,因爲需要編譯但可行)
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/myReport.jrxml");
填寫報告
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params);
(內部報告或只是靜態文本生成的數據源)
與沒有與數據源:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
與數據庫連接(可能是最常見的,SQL中報告執行)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);
導出報告
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();
如果你喜歡流報告直接將網頁這是怎麼contentType
和Content-disposition
設置以及如何獲取outputStream
response.setContentType("application/x-pdf");
response.setHeader("Content-disposition", "inline; filename=myReport.pdf");
OutputStream outputStream = response.getOutputStream();
自發布之後6年後[JRExport erParameter.OUTPUT_STREAM](http://javadox.com/net.sf.jasperreports/jasperreports/5.1.0/net/sf/jasperreports/engine/JRExporterParameter.html#OUTPUT_STREAM)已被棄用,我已發佈[答] (http://stackoverflow.com/a/35698286/5292302)顯示如何在當前版本中實現此答案。 – 2016-02-29 11:28:44