Java 在Tomcat应用服务器上执行时,无法创建多页excel jasper报表

Java 在Tomcat应用服务器上执行时,无法创建多页excel jasper报表,java,jasper-reports,export-to-excel,Java,Jasper Reports,Export To Excel,我是JasperSoft的新手,当我上传jrxml并尝试在运行ApacheTomcat 8的web应用程序上执行它时,我发现将报告导出到多选项卡(多页)excel文件存在问题。 我使用iReport 4.6.0 CE构建此报告,其中我使用包含在两个标题组中的两个子报告(以分页符分隔),以确定excel文件第一个选项卡的结尾和第二个选项卡的开头。 当我使用iReport运行此报告时,我首先得到了我想要的结果 但是,当我在web应用程序上运行同一个报表时,我会从同一选项卡下的两个子报表中获取所有数据

我是JasperSoft的新手,当我上传jrxml并尝试在运行ApacheTomcat 8的web应用程序上执行它时,我发现将报告导出到多选项卡(多页)excel文件存在问题。 我使用iReport 4.6.0 CE构建此报告,其中我使用包含在两个标题组中的两个子报告(以分页符分隔),以确定excel文件第一个选项卡的结尾和第二个选项卡的开头。 当我使用iReport运行此报告时,我首先得到了我想要的结果 但是,当我在web应用程序上运行同一个报表时,我会从同一选项卡下的两个子报表中获取所有数据。 有人能帮我吗

这是我的主要报告xml代码

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reportGlobalDOD" language="groovy" pageWidth="1310" pageHeight="842" columnWidth="1270" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isIgnorePagination="true" uuid="3eb83bbf-8ce6-4d69-b25a-288780da1894">
<property name="net.sf.jasperreports.export.xls.one.page.per.sheet" value="true"/>
<property name="ireport.zoom" value="0.75"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<property name="net.sf.jasperreports.export.xls.sheet.names.1" value="Broker"/>
<property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/>
<property name="net.sf.jasperreports.export.xls.sheet.names.2" value="PMA"/>

<parameter name="EffDate" class="java.util.Date">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<queryString>


<![CDATA[SET LANGUAGE ENGLISH;
Declare     @CurrentDay smalldatetime = NULL

select @CurrentDay =$P{EffDate}
select @CurrentDay as effective_date]]>
    </queryString>
    <field name="effective_date" class="java.sql.Timestamp"/>
    <group name="subreport1">
        <groupExpression><![CDATA[dummy1]]></groupExpression>
        <groupHeader>
            <band height="152">
                <subreport>
                    <reportElement uuid="22345c46-948d-435f-99de-dbec39e586e2" x="-20" y="0" width="1310" height="134"/>
                    <subreportParameter name="EffDate">
                        <subreportParameterExpression><![CDATA[$P{EffDate}]]></subreportParameterExpression>
                    </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "/BrokerDayOverDayReconciliation.jasper"]]></subreportExpression>
                </subreport>
                <break>
                    <reportElement uuid="c23c613d-444f-4b61-84f2-ee14d39df15c" x="0" y="140" width="100" height="1"/>
                </break>
            </band>
        </groupHeader>
    </group>
    <group name="subreport2">
        <groupExpression><![CDATA[dummy1]]></groupExpression>
        <groupHeader>
            <band height="115">
                <subreport>
                    <reportElement uuid="1a03a62a-4372-4a42-8910-bd8e79cfb318" x="-20" y="0" width="1310" height="115"/>
                    <subreportParameter name="EffDate">
                        <subreportParameterExpression><![CDATA[$P{EffDate}]]></subreportParameterExpression>
                    </subreportParameter>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "/PMADayOverDayReconciliation.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </groupHeader>
    </group>
</jasperReport>
此外,我还尝试使用较新版本的ireport(特别是5.0.0)执行相同的报告,它将两张工作表的数据合并到同一张工作表中(结果是一个excel文件,带有一个唯一的选项卡,该选项卡结合了两个子报告的数据提取)。请帮助我这里缺少了什么。

我的解决方案是将“ignorePagination”设置为false(我知道这可能会导致一些问题,因为它可能会创建比所需更多的表),并增加两个子报告和包含它们的两个带的高度。这可能不是一个稳定的解决方案,但我知道这是一种魅力


我的解决方案是将“ignorePagination”设置为false(我知道这可能会导致一些问题,因为它可能会创建比所需更多的表),并增加2个子报表和包含它们的两个栏位的高度。这可能不是一个稳定的解决方案,但我知道这是一个魅力所在



可能重复的&@AlexK我使用了您在构建此报告时指出的问题的回答,但是它仅在本地有效,而在应用程序上运行时无效。我的问题仍然在这里。您的Java代码是什么?错误是什么?@PetterFriberg我在查阅日志时没有任何错误或异常。可能重复的&@AlexK我使用了您在构建此报告时指出的问题的回答,但它仅在本地有效,而在应用程序上运行时无效。我的问题还在这里。你的Java代码是什么?错误是什么?@PetterFriberg我查阅日志时没有任何错误或异常。
 JRXlsExporter exporterXLS = new JRXlsExporter();

         exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
         exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, outputByte);
         exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
        //               exporterXLS.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE, Boolean.TRUE);
         exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
         exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
         exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
         exporterXLS.setParameter(JExcelApiExporterParameter.IS_DETECT_CELL_TYPE,Boolean.TRUE);
         exporterXLS.exportReport();