使用API​​ DynamicJasper的

问题描述:

我在我的应用程序的不同模块的单个报表生成风景和肖像。每个模块都可以用excel,word和pdf导出。报告的格式是在任一景观肖像。现在我需要编译所有这些报告并导出为单个报告。但我面临的一个问题是,在出口时,DynamicJasper只显示单一格式,即风景人像使用API​​ DynamicJasper的

如何在一份报告中使用两种格式显示我的报告使用DynamicJasper API

+0

你可以看看[如何将多个jrxml碧玉报告整理成一个单一的pdf输出文件](http://*.com/questions/8564163/how-to-collat​​e-multiple-jrxml-jasper-reports-成一个单一的pdf输出文件)问题。它关于* JasperReports API *,但是这是* DynamicJasper API *的一部分。您可以为每个报告设置方向,然后在*** JASPER_PRINT_LIST ***参数的帮助下将它合并到一起。你也可以看到[改变方向的jasperprint](http://*.com/questions/8428619/change-orientation-of-jasperprint)问题 –

您可以创建一个主报表,并添加子报表吧,这是主报告的一个例子,以及如何添加子报表:

public DynamicReport buildDynamicReport() throws ReportDocumentGenerationException { 
    DynamicReportBuilder drb = new DynamicReportBuilder(); 
    drb.setDetailHeight(detailHeight)  
    .setMargins(properties.getReportMargins().getTopMargin(), properties.getReportMargins().getBottomMargin(), properties.getReportMargins().getLeftMargin(), properties.getReportMargins().getRightMargin())  
    .setDefaultStyles(null, null, null, getSpoolStyle(SpoolRow.PLAIN_ATTRIBUTE))  
    .setPageSizeAndOrientation(new Page(**/*Your document dimensions and orientation*/**) 
    .setColumnsPerPage(1); 
    for(ReportDocumentInformationPage page: reportInformation.getPaginas()){ 
      drb.addConcatenatedReport(getPageSubReport(page.getPageNumber()),new ClassicLayoutManager(),"DS"+page.getPageNumber().toString(),DJConstants.DATA_SOURCE_ORIGIN_PARAMETER, DJConstants.DATA_SOURCE_TYPE_JRDATASOURCE,!page.getPageNumber().equals(1)); 
      params.put("DS"+page.getPageNumber().toString(), getReportJRDataSource(page.getPageNumber()) ); 
     } 
     drb.setUseFullPageWidth(true); 
     DynamicReport dr = drb.build(); 
     return dr; 
    } 

这是一个关于如何创建子报表的例子:

*private DynamicReport getPageSubReport(int i) throws ReportDocumentGenerationException { 
     try{ 
      DynamicReportBuilder drb = new DynamicReportBuilder(); 
      drb.setDetailHeight(detailHeight) 
      .setReportName("Reporte"+i) 
      .setMargins(properties.getReportMargins().getTopMargin(), properties.getReportMargins().getBottomMargin(), properties.getReportMargins().getLeftMargin(), properties.getReportMargins().getRightMargin()) 
      .setDefaultStyles(null, null, null, getSpoolStyle(SpoolRow.PLAIN_ATTRIBUTE))  
      .setPageSizeAndOrientation(new Page(**/*Your specific Page dimensions and orientation***/) 
      .setColumnsPerPage(1); 

      AbstractColumn spoolColumn = ColumnBuilder.getNew()  
      .setColumnProperty("value", String.class.getName())  
      .setTitle(null)  
      .setWidth(150) 
      .build();  
      spoolColumn.setConditionalStyles(getSpoolConditionalStyle()); 

      drb.addColumn(spoolColumn); 
      drb.setUseFullPageWidth(true); 
      drb.addField("attributes", String.class.getName()); 
      DynamicReport dr = drb.build(); 
      return dr; 
     }catch(ColumnBuilderException cbe){ 
      cbe.printStackTrace(); 
      throw new ReportDocumentGenerationException("No se pudo definir correctamente la columna del reporte para la pagina "+i); 
     }catch(Exception e){ 
      e.printStackTrace(); 
      throw new ReportDocumentGenerationException("No se pudo generar la pagina "+i+" del reporte"); 
     } 
    }* 

希望它能帮助。

如果你拥有或能得到处理您JasperPrint对象,那么你可以设置方向:

final JasperDesign jasperDesign = JRXmlLoader.load(someInputStream); 
final JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
final JasperPrint jasperPrint = jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSourceOrConnection);  
... 
jasperPrint.setOrientation(OrientationEnum.LANDSCAPE); // Pick 
jasperPrint.setOrientation(OrientationEnum.PORTRAIT); // One 
... 
someJRExporter.exportReport(); 

您还可以设置页面宽度和高度与JasperPrint对象。