レポートを Excel 形式で生成する必要があるという要件があります。Excel シートのシートが動的に生成されます。これらの動的に生成されたシートに名前を付ける方法があるかどうかを知りたかった. net.sf.jasperreports.export.xls.sheet.names.{arbitrary_name} プロパティを使用すると、既知のシートにのみ名前を付けることができます.他のシートについてはジャスパーデフォルトの名前を「Page X」などにします。ありがとう
質問する
7569 次
3 に答える
2
レポートのリストを作成して、JasperPrint リストに追加できます。
最後に、リスト内のすべてのシートの名前を次のように設定できます。
exporterXLS.setParameter(JRXlsAbstractExporterParameter.SHEET_NAMES, new String[] {"sheet one", "sheet two",
"sheet three"});
exporterXLS は JRXlsExporter クラスのインスタンスです。
以下は、上で説明したことのより完全な例です。
Connection con = this.jdbcTemplate.getDataSource().getConnection();
Map<String, String> hashmap = new HashMap<String, String>();
hashmap.put("ReportQuery", this.ReportQuery);
JasperReport myJasperReport = JasperCompileManager.compileReport(this.reportJRXML);
JasperPrint myJasperPrint = JasperFillManager.fillReport(myJasperReport, hashmap, con);
List<JasperPrint> jprintList = new ArrayList<JasperPrint>();
jprintList.add(myJasperPrint);
OutputStream outputfile = new FileOutputStream(new File(this.outputExcel));
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jprintList);
exporterXLS.setParameter(JRExporterParameter.OUTPUT_STREAM, outputfile);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_DETECT_CELL_TYPE, Boolean.FALSE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.IS_IGNORE_GRAPHICS, Boolean.TRUE);
exporterXLS.setParameter(JRXlsAbstractExporterParameter.SHEET_NAMES, new String[] {"first report"});
exporterXLS.exportReport();
于 2012-06-06T11:49:31.990 に答える
2
ページヘッダーまたは任意の場所で line 要素を使用して、個別のシートに動的に名前を付けることができます。
注: このプロパティは、レポート レベルではなく要素レベルで設定できます。そのため、例では行を要素として使用しています。
例 :
<line>
<reportElement x="140" y="17" width="50" height="1">
<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{TERRITORY}]]></propertyExpression>
</reportElement>
</line>
于 2012-08-17T09:25:54.550 に答える