Search code examples
jasper-reports

How to get values in new column, instead of new row?


I want to make iReport subreport do something like:

a b c

but it returns me:

a

b

c

How can I make that every new value goes into new column?


Solution

  • To achieve this you use columnCount and printOrder on the jasperReport tag

    Example with 3 columns

    Sample data

    +----------------+--------+
    |      User      |  Rep   |
    +----------------+--------+
    | Jon Skeet      | 854503 |
    | Darin Dimitrov | 652133 |
    | BalusC         | 639753 |
    | Hans Passant   | 616871 |
    | Me             |   5640 |
    +----------------+--------+
    

    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="reputation" columnCount="3" printOrder="Horizontal" pageWidth="595" pageHeight="842" columnWidth="185" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a88bd694-4f90-41fc-84d0-002b90b2d73e">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="User" class="java.lang.String"/>
        <field name="Rep" class="java.lang.Long"/>
        <columnHeader>
            <band height="20" splitType="Stretch">
                <staticText>
                    <reportElement x="0" y="0" width="100" height="20" uuid="9e7b5f50-5795-4c95-a122-f14f2e3f9366"/>
                    <box leftPadding="3" bottomPadding="0" rightPadding="3">
                        <pen lineWidth="0.25"/>
                        <topPen lineWidth="0.25"/>
                        <leftPen lineWidth="0.25"/>
                        <bottomPen lineWidth="0.5" lineStyle="Double"/>
                        <rightPen lineWidth="0.25"/>
                    </box>
                    <textElement verticalAlignment="Middle">
                        <font fontName="SansSerif" isBold="true"/>
                    </textElement>
                    <text><![CDATA[User]]></text>
                </staticText>
                <staticText>
                    <reportElement x="100" y="0" width="85" height="20" uuid="4a6f0a2a-d9b5-4e74-a9e8-0f965336f2bf"/>
                    <box leftPadding="3" bottomPadding="0" rightPadding="3">
                        <pen lineWidth="0.25"/>
                        <topPen lineWidth="0.25"/>
                        <leftPen lineWidth="0.25"/>
                        <bottomPen lineWidth="0.5" lineStyle="Double"/>
                        <rightPen lineWidth="0.25"/>
                    </box>
                    <textElement textAlignment="Right" verticalAlignment="Middle">
                        <font fontName="SansSerif" isBold="true"/>
                    </textElement>
                    <text><![CDATA[Reputation]]></text>
                </staticText>
            </band>
        </columnHeader>
        <detail>
            <band height="20" splitType="Stretch">
                <textField>
                    <reportElement x="0" y="0" width="100" height="20" uuid="8ff583b9-88dc-4726-85e1-16d79de78095"/>
                    <box leftPadding="3" bottomPadding="0" rightPadding="3">
                        <pen lineWidth="0.25"/>
                        <topPen lineWidth="0.25"/>
                        <leftPen lineWidth="0.25"/>
                        <bottomPen lineWidth="0.25"/>
                        <rightPen lineWidth="0.25"/>
                    </box>
                    <textElement verticalAlignment="Middle">
                        <font fontName="SansSerif"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{User}]]></textFieldExpression>
                </textField>
                <textField pattern="#,##0">
                    <reportElement x="100" y="0" width="85" height="20" uuid="ebd33b2f-7297-41c2-9dc7-78ff472890c4"/>
                    <box leftPadding="3" bottomPadding="0" rightPadding="3">
                        <pen lineWidth="0.25"/>
                        <topPen lineWidth="0.25"/>
                        <leftPen lineWidth="0.25"/>
                        <bottomPen lineWidth="0.25"/>
                        <rightPen lineWidth="0.25"/>
                    </box>
                    <textElement textAlignment="Right" verticalAlignment="Middle">
                        <font fontName="SansSerif"/>
                    </textElement>
                    <textFieldExpression><![CDATA[$F{Rep}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
    </jasperReport>
    

    Result

    output