![](/img/trans.png)
[英]Add Custom Calculations in the Column Footer using DynamicJasper in Excel report
[英]How to run a vertical report (column as value) using DynamicJasper?
我需要運行一個垂直報告,其中列名稱將顯示在一個具有相鄰值的行中,如鍵值對。
我正在嘗試使用屬性printOrder但不確定我可以在哪里實現相同的屬性。
我嘗試使用CROSS應用SQL查詢來獲取列名和值作為鍵值對,但很難區分報告中的2個不同記錄。
以下是我正在運行的代碼:
drb = new DynamicReportBuilder();
drb.setMargins(10, 10, 10, 10)
.setTitleHeight(50)
.setDetailHeight(12)
.setHeaderHeight(22)
.setGrandTotalLegend("Total Count : ")
.setGrandTotalLegendStyle(headerVariables)
.setPrintBackgroundOnOddRows(true)
.setDefaultStyles(titleStyle, null, headerStyle, detailStyle)
.setPageSizeAndOrientation(Page.Page_A4_Landscape());
AbstractColumn callID = ColumnBuilder.getNew()
.setColumnProperty("Cname", String.class.getName())
.setTitle("COLUMN NAME").setWidth(80).build();
AbstractColumn callbeginTime = ColumnBuilder.getNew()
.setColumnProperty("data", String.class.getName())
.setTitle("CALL DATA").setWidth(80).build();
drb.addColumn(callID);
drb.addColumn(callbeginTime);
drb.setTitle("New report");
drb.addAutoText(AutoText.AUTOTEXT_PAGE_X_SLASH_Y, AutoText.POSITION_FOOTER, AutoText.ALIGNMENT_RIGHT);
drb.setAllowDetailSplit(false);
drb.setUseFullPageWidth(true);
drb.setPrintColumnNames(true);
Map<String, Object> params = new HashMap<String, Object> ();
params.put("reportTitle", "New report");
params.put("date", dtLong.format(new Date()));
params.put("reportFormat", "pdf");
DynamicReport dr = drb.build(); //create dynamic report object
//using dynamic report
JasperReport jr = DynamicJasperHelper.generateJasperReport(dr, getLayoutManager(),params);
DynamicJasperDesign dynamicJasperDesign = DynamicJasperHelper.generateJasperDesign(dr);
JRSwapFile swapFile = new JRSwapFile("E:\\report files\\", 1024, 100);
JRSwapFileVirtualizer swapVirtualizer = new JRSwapFileVirtualizer(50, swapFile, true);
System.out.println("dddd2");
params.put(StandardListComponent.PROPERTY_PRINT_ORDER,PrintOrderEnum.VERTICAL);
params.put(JRParameter.REPORT_VIRTUALIZER, swapVirtualizer);
JasperPrint jp = JasperFillManager.fillReport(jr, params, new
JRResultSetDataSource(ResultSet));
jp.setProperty(StandardListComponent.PROPERTY_PRINT_ORDER,"VERTICAL");
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
exporter.setParameter(JRPdfExporterParameter.OUTPUT_FILE_NAME, "e:\\report files\\final"+Math.random()+".pdf");
exporter.exportReport();
通過動態報告,我得到的值如下:
COL1 | COL2 | COL3
ROW1C1 | ROW1C2 | ROW1C3
ROW2C1 | ROW2C2 | ROW2C3
預期結果:
COLUMN NAME | COLUMN VALUE
COL1 | ROW1C1
COL2 | ROW1C2
COL3 | ROW1C3
COL1 | ROW2C1
COL2 | ROW2C2
COL3 | ROW2C3
始終將DynamicJasper視為JasperReports的便捷工具/包裝器。 如果JasperReport本身不能滿足您的需求,DJ也不會。
我的建議是首先嘗試使用裸JasperReport(通過使用iReport / JasperStudio)獲取報告的簡單版本(非動態),如果您設法獲取報告,那么我們可以想出一種方法來弄清楚如何實現這一點使用DJ。
大多數情況下,如果它可行,您將輕松獲得所需的屬性/配置,並且您將知道如何使用DJ構建報告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.