4

レポートを Excel 形式で生成する必要があるという要件があります。Excel シートのシートが動的に生成されます。これらの動的に生成されたシートに名前を付ける方法があるかどうかを知りたかった. net.sf.jasperreports.export.xls.sheet.names.{arbitrary_name} プロパティを使用すると、既知のシートにのみ名前を付けることができます.他のシートについてはジャスパーデフォルトの名前を「Page X」などにします。ありがとう

4

3 に答える 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 に答える