Jasper reports 分组表格报告

Jasper reports 分组表格报告,jasper-reports,Jasper Reports,如何在iReport 5.0.0中通过对特定列进行分组来生成报告。比如说 username category view xmen news good xmen media good xmen radio bad xmen tv ok Ymen news good Ymen media good Ymen

如何在iReport 5.0.0中通过对特定列进行分组来生成报告。比如说

username  category       view
xmen        news         good
xmen        media        good
xmen        radio        bad
xmen        tv            ok
Ymen        news         good
Ymen        media        good
Ymen        radio        bad
Ymen        tv            ok
我可以很容易地将其作为表格报告,但当涉及到分组时,我被卡住了

我想要一份这样显示的表格报告

username  category       view
xmen        news         good
            media        good
            radio        bad
             tv            ok
Ymen        news         good
            media        good
            radio         bad
             tv            ok
组属性在哪里以及如何执行。所有这些都将以表格的形式出现,这是我在这里无法做到的


请为我提供任何一种格式。

使用iReport,您可以通过右键单击报表检查器中的报表名称和“添加报表组”来添加分组。 通过了解您需要在查询设计器中对数据进行分组以及在报表设计器中添加组,将主要添加2个新的带区,这将允许您管理特定于组的报表设计,例如突出显示组名等。。。 在设计器中添加组还将允许您管理变量的计算时间,这将使您能够对每个组中的所有元素进行求和

但根据您的示例,您可以在用户名列的文本字段中使用一个表达式,并使用两个额外的变量。 添加一个等于$F{username}且不进行计算的变量,并将其命名为“currentValue” 添加第二个变量,该变量等于$V{currentValue},并将其命名为“previousValue”

现在,在报表检查器面板的变量列表中,将变量“previousValue”拖动到“currentValue”变量上方。由于JR自上而下执行变量,它将首先为“previousValue”指定null,然后为“currentValue”指定当前值,然后在下一行,“currentValue”将为前一行值,并将指定给“previousValue”,然后“currentValue”将取当前值。 因此,在文本字段表达式中,您只需输入

$V{previousValue}==$V{currentValue} ? "" : $F{username}

这样,用户名将仅在第一次出现时显示。

或者,您可以执行以下操作(使用iReport):

  • 根据用户名添加报表组,不添加组页眉和页脚
  • 将字段从报表检查器拖放到报表设计器中的“详细信息”栏中
  • 选择保存用户名的
    文本字段
    ,在属性面板中取消选中“打印重复值”
生成的报告如下图所示。

附上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="report6" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="9ecb5f72-ce8e-4b32-bc4b-124460d6d018">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[select * from (

select 'xmen' as  username, 'news' as category, 'good' as view
union select 'xmen', 'media', 'good'
union select 'xmen', 'radio', 'bad'
union select 'xmen', 'tv', 'ok'
union select 'Ymen', 'news', 'good'
union select 'Ymen', 'media', 'good'
union select 'Ymen', 'radio', 'bad'
union select 'Ymen', 'tv', 'ok'

) tbl

order by username]]>
    </queryString>
    <field name="username" class="java.lang.String"/>
    <field name="category" class="java.lang.String"/>
    <field name="view" class="java.lang.String"/>
    <group name="user">
        <groupExpression><![CDATA[$F{username}]]></groupExpression>
    </group>
    <columnHeader>
        <band height="20">
            <staticText>
                <reportElement uuid="6cb3e793-d932-4d29-aca4-3b1efa03a5dd" x="0" y="0" width="185" height="20"/>
                <textElement/>
                <text><![CDATA[username]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="341be19e-6a83-4b8d-9878-8e2c8760b014" x="185" y="0" width="185" height="20"/>
                <textElement/>
                <text><![CDATA[category]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="8778300d-b296-41d9-9d12-abda95a80c71" x="370" y="0" width="185" height="20"/>
                <textElement/>
                <text><![CDATA[view]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="4d88aa40-ee74-4535-99a4-e3aec64188d2" isPrintRepeatedValues="false" x="0" y="0" width="185" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{username}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="c098560e-c140-4b9a-9599-ed0875014c0f" x="185" y="0" width="185" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{category}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="1784b19e-6adb-4d3e-aa04-d172ee39a7cf" x="370" y="0" width="185" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{view}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>


@Alex K,你能告诉我在报表设计器中这些功能在哪里可用吗?什么是组头和组尾?是页面还是列页眉和页脚?既不使用组页眉也不使用组页脚。列标题包含标签的静态文本,详细信息栏包含所有字段。参考JRXML。它是否支持表格格式format@MrsTang好的。如何将所有这些以表格的形式放置