Jasper reports 如何从jasper报表导出到excel中的多张图纸

Jasper reports 如何从jasper报表导出到excel中的多张图纸,jasper-reports,Jasper Reports,我正在与iReport一起编写一份包含多个子报告的报告 从应用程序生成报告时,我希望excel文件中有另外两张表 在搜索互联网时,我找到了关于在报告中创建中断的答案,在子报告“true”中选择“忽略分页”,但我仍然不清楚 在jasper report中,我可以选择哪些选项来控制创建新工作表的方式和时间在jrxml和java代码中有不同的方法来实现新工作表。默认行为是为每个页面创建一个新的工作表。我将举例说明3种最常见的方法,以及使用它们时的相关问题 忽略分页和断开元素 方法 List<Ja

我正在与iReport一起编写一份包含多个子报告的报告

从应用程序生成报告时,我希望excel文件中有另外两张表

在搜索互联网时,我找到了关于在报告中创建中断的答案,在子报告“true”中选择“忽略分页”,但我仍然不清楚


在jasper report中,我可以选择哪些选项来控制创建新工作表的方式和时间在
jrxml
java
代码中有不同的方法来实现新工作表。默认行为是为每个页面创建一个新的工作表。我将举例说明3种最常见的方法,以及使用它们时的相关问题

忽略分页和断开元素

方法

List<JasperPrint> sheets = new ArrayList<JasperPrint>();
for (int i=1;i<=8;i++){
   JasperPrint print = JasperFillManager.fillReport("subReport_" + i + ".jasper", paramMap, connection);
   sheets.add(print); 
}
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(SimpleExporterInput.getInstance(sheets));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("text.xlxs"));
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setSheetNames(sheetNames): //sheets names is an array of the different names.
configuration.setOnePagePerSheet(false); //remove that it break on new page
configuration.setDetectCellType(true);
exporter.setConfiguration(configuration);
exporter.exportReport();
jasperReport
标记上设置
isIgnorePagination=“true”
,然后添加

<break>
  <reportElement x="0" y="0" width="100" height="1" uuid="c5371aa4-2eb4-4ab9-8cae-39f50da3317b"/>
</break>
当您希望它在
reportElement
添加相对属性之前或之后创建新的工作表时:

net.sf.jasperreports.export.xls.break.before.row="true"
net.sf.jasperreports.export.xls.break.after.row="true"
问题:每张图纸上的列都是相同的,这可能会导致不同图纸上的列出现难看的列间距

使用java并根据需要控制工作表(加载不同的报告)

方法

List<JasperPrint> sheets = new ArrayList<JasperPrint>();
for (int i=1;i<=8;i++){
   JasperPrint print = JasperFillManager.fillReport("subReport_" + i + ".jasper", paramMap, connection);
   sheets.add(print); 
}
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(SimpleExporterInput.getInstance(sheets));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("text.xlxs"));
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setSheetNames(sheetNames): //sheets names is an array of the different names.
configuration.setOnePagePerSheet(false); //remove that it break on new page
configuration.setDetectCellType(true);
exporter.setConfiguration(configuration);
exporter.exportReport();
List sheets=new ArrayList();

对于(inti=1;iHello Petter!感谢您的回答:)实际上我正在使用Jasper报表服务器。我所做的是设置net.sf.jasperreports.export.xls.one.page.per.sheet=“true”,创建了一个新的组,在其中我将要生成的子报表放在第二个表中,该组的组属性为:在新页面上开始“checked”。此外,在子报表和主报表中选中了属性“ignore pagination”,这就成功了!我已将主报告的内容放在详细栏中。