4

JasperReportsでレポートを設計する必要があるという要件があります。レポートは4枚あります。最初のシートは5ページで、他のシートも同様に1ページまたは2ページです。私が直面している問題は、net.sf.jasperreports.export.xls.one.page.per.sheetプロパティを使用してtrueに設定した場合です。 、その後、すべてのページが異なるシートになります。一部のページが同じシートに表示され、一部のページが別のシートに表示されるようにレポートを設計する必要があります。

これを行うことは可能ですか?

4

1 に答える 1

9

Ignore Paginationバッチ エクスポートする 4 つの個別のレポートがあると仮定すると、各レポートで設定する必要がありますtrue(これは、jrxml ファイルの先頭にある jasperReport タグの属性であり、属性は のようになりますisIgnorePagination="true")。

実際にエクスポートするには、次のようになります。

List<JasperPrint> jasperPrintList = new ArrayList<JasperPrint>();
jasperPrintList.add(JasperFillManager.fillReport("report1.jasper", params1));
jasperPrintList.add(JasperFillManager.fillReport("report2.jasper", params2));
jasperPrintList.add(JasperFillManager.fillReport("report3.jasper", params3));
jasperPrintList.add(JasperFillManager.fillReport("report4.jasper", params4));

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "BatchExportReport.xls");
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);

exporter.exportReport();

シート名を設定するには、JasperForge にある動的シート名の例を見てください。


あなたのコメントによると、同じレポート テンプレートを使用して複数の形式にエクスポートしたいと考えています。ページネーションを無視する必要があるのはExcelだけです。できることは、レポートにハードコーディングするのではなく、実行時にパラメーターを介して設定することです。したがって、params1、params2、params3、および params4 に以下を追加します。

if(exportFormat == EXCEL) {
   params1.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
   params2.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
   params3.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
   params4.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
}
于 2012-05-25T13:42:19.217 に答える