当前位置: 首页 > 知识库问答 >
问题:

使用java bean数据源时,jasper报告不显示表格

段超
2023-03-14

我在我的项目中使用JasperReport,在摘要带中使用表组件并使用JRBeanGrou

这是我的.jrxml

<?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="CampaignSummary" language="groovy" pageWidth="1400" pageHeight="1000" orientation="Landscape" columnWidth="1360" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ef078799-c539-490f-b244-d493f4522ef2">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="163"/>
<property name="ireport.y" value="0"/>
<style name="table">
    <box>
        <pen lineWidth="1.0" lineColor="#000000"/>
    </box>
</style>
<style name="table_TH" mode="Opaque" backcolor="#00FFFF"/>
<style name="table_CH" mode="Opaque" backcolor="#BFFFFF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
    </box>
</style>
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
    <box>
        <pen lineWidth="0.5" lineColor="#000000"/>
    </box>
    <conditionalStyle>
        <conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]></conditionExpression>
        <style backcolor="#EFFFFF"/>
    </conditionalStyle>
</style>
<subDataset name="TableDataset" uuid="c99fd89d-9d8f-488f-95db-360a7f5aba96">
    <field name="CampaignID" class="java.lang.String">
        <fieldDescription><![CDATA[me.CampaignID]]></fieldDescription>
    </field>
    <field name="CampaignName" class="java.lang.String">
        <fieldDescription><![CDATA[Campaign Name]]></fieldDescription>
    </field>
    .
            .
            .
    ......some more fields....
            .
            .
    <field name="NetImpact" class="java.lang.String">
        <fieldDescription><![CDATA[Net Impact]]></fieldDescription>
    </field>
</subDataset>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band height="54" splitType="Stretch">
        <staticText>
            <reportElement uuid="8b41287b-3930-416a-ba00-7f4a9c907e26" x="0" y="0" width="1360" height="54"/>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="Arial Rounded MT Bold" size="24"/>
            </textElement>
            <text><![CDATA[Campaign Summary Report]]></text>
        </staticText>
    </band>
</title>
<summary>
    <band height="239" splitType="Stretch">
        <frame>
            <reportElement uuid="61313d06-6df1-4212-ab8f-8e311dc5ad33" x="0" y="0" width="1360" height="87"/>
        </frame>
        <frame>
            <reportElement uuid="c04b08f6-89d3-4104-87ba-adecd3c4f7dd" x="0" y="87" width="1360" height="152"/>
            <componentElement>
                <reportElement uuid="8afc21c1-7b57-4dab-8178-8810c1183dd9" key="table" style="table" x="0" y="0" width="1360" height="152"/>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="TableDataset">
                        <dataSourceExpression>
                            <![CDATA[($P{REPORT_DATA_SOURCE})]]>
                        </dataSourceExpression>
                    </datasetRun>
                    <jr:column width="90" uuid="eece2ecf-027d-4ef1-bd05-8d7d6bbbc0b0">
                        <jr:columnHeader style="table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement uuid="c0d108a0-9f4b-4ec3-b9d0-664ea0724584" x="0" y="0" width="90" height="30"/>
                                <textElement/>
                                <text><![CDATA[Campaign Name]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="table_TD" height="20" rowSpan="1">
                            <textField>
                                <reportElement uuid="6a8f7bf6-5e9b-4f77-a524-9a8d7f0ee2ca" x="0" y="0" width="90" height="20"/>
                                <textElement/>
                                <textFieldExpression><![CDATA[String.valueOf($F{CampaignName})]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    .
                                            .
                                            .some more columns...
                                            .
                    <jr:column width="80" uuid="312f9143-cee8-46fb-a296-27172c4fca98">
                        <jr:columnHeader style="table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement uuid="22ec2935-d4a9-4b64-856d-e64d72f0d856" x="0" y="0" width="80" height="30"/>
                                <textElement/>
                                <text><![CDATA[Net Impact]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="table_TD" height="20" rowSpan="1">
                            <textField>
                                <reportElement uuid="071cddad-63f1-47bc-8da5-a2d6752e3abe" x="0" y="0" width="80" height="20"/>
                                <textElement/>
                                <textFieldExpression><![CDATA[String.valueOf($F{NetImpact})]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </frame>
    </band>
</summary>

java代码是

CampaignSummaryBeanFactory campaignSummaryBeanFactory =new CampaignSummaryBeanFactory();
JasperFillManager.fillReportToFile("build/reports/CampaignSummary.jasper", null, new JRBeanCollectionDataSource(campaignSummaryBeanFactory.getCampaignSummaryBeans()));

共有2个答案

鲍宁
2023-03-14

你们会发现一些人告诉你们把桌子放在总结区。但这就是你的表不显示的原因。把它放在一个细节带里。

东郭源
2023-03-14

如果表为空,则不会显示该表。

你在campaignSummaryBeanFactory.getCampaignSummaryBeans()中有任何元素吗?

>

  • 对于没有数据的情况,如果您想在没有行的情况下看到空表,请在“no data”(无数据)区域中放置一些内容,比如“no data to display”(无要显示的数据),甚至是表的标题。

    就您的代码而言,如果数据源中有 1 个元素,则该表也将为空。否则,它将保留列表中的第一条记录。查看 Jasper 报告缺少第一行

  •  类似资料:
    • 因为JasperReport可以将JavaBean集合作为数据源。我们可以用一个引用多个SetCollections的单个对象发送一个SetCollection吗。并使用这些引用传递给编译后的jrxml文件,每次传递不同的setCollection时,都使用对JasPerfillManager.FillReport()的多重调用。我只是想知道编译后的jrxml文件是否会用最后一次调用填充,或者是否

    • 我编写这段代码是为了使用iReport 4.7.1显示一个简单的报告。 以下是我的库: commons-beanutils-1.8.0.jar commons-collections-2.1.1.jar commons-digester-2.1.jar commons-logging-1.1.1.jar jasperrreports-4.7.1.jar jasperreports-applet-4

    • 我用的是Jasper reports 6.17,我在Jasper Studio里做了一个列表。 列表中只有两个名为“test1”和“test2”的项目,但只显示了一个,我不知道为什么。生成的PDF仅显示“test2”,为什么缺少“test1”?如果我添加10项,第一行将丢失。 jrxml文件是: java文件是:

    • 当我试图通过使用JavaBean数据源并在表中显示bean的字段值来生成报告时,PDF报告显示的是空值。 我有一个简单的bean(PersonBean)如下所示: 填充并返回bean集合的Person类如下所示:

    • 我是贾斯珀报告的新手。我成功地显示了一个带有碧玉报告的表格。但是如何通过Spring控制器在碧玉报告中显示多个表格? 我没有使用数据库作为数据源,只是在ArrayList中使用普通的POJO。 这是我的Spring配置 这是我的控制器。 人员类 如何定义不同的数据源,以便我可以在报表中使用两个(或更多)列表?或者,也许我可以使用一个包含多个列表的数据源?

    • 我的JSF2.0web应用程序旨在生成PDF报告。问题是在资源管理器窗口中没有显示PDF报告。我正在使用eclipse kepler,带有apache-tomcat-7.0.52,并且jasper Ireport的版本是4.8。 我将提供整个java类: 我可以在控制台看到消息,并且页面被刷新,但是没有PDF报告出现在explorer屏幕上 我已经用下面的代码替换了上面的PDF方法,但是徒劳的是,