jasper报告:交叉表上的自定义列

问题描述 投票:0回答:1

我想知道是否有一种方法可以在给我交叉表的总计列之后设置自定义列。

我需要打印动态列及其总数,并在最后添加一些信息,但无法在总列后找到添加自定义信息的方法...

有没有人试图做类似的事情?

jasper-reports crosstab
1个回答
0
投票

您可以通过添加具有常量表达式的顶级列组,将组标题高度设置为0并使用组总计列来显示其他值来实现。这些值可以作为calculation="Nothing"的度量传递,或者通过其他方式传递,具体取决于具体情况。

这是一份实现我的建议的报告。这是一个经过修改的JasperReports示例报告,您可以使用Jaspersoft Studio中的示例数据库运行它。

<?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="ProductsReport" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="782" leftMargin="30" rightMargin="30" topMargin="30" bottomMargin="30" whenNoDataType="AllSectionsNoDetail" uuid="d8258224-60b6-4c49-b0e9-a411ee2fbd39">
    <style name="Sans_Normal" isDefault="true" fontName="DejaVu Sans" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
    <style name="Sans_Bold" fontName="DejaVu Sans" fontSize="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false"/>
    <style name="cell">
        <box>
            <pen lineWidth="0.5"/>
        </box>
    </style>
    <subDataset name="Customer_Quantity" uuid="d7fa233d-253a-4620-93b5-d8c430099436">
        <parameter name="CityParam" class="java.lang.String"/>
        <queryString>
            <![CDATA[SELECT product.name, positions.quantity,
                       address.firstname, address.lastname, address.street
                FROM product, positions, address, document
                WHERE product.id = positions.productid AND
                      address.id = document.addressid AND
                      document.id = positions.documentid AND
                      address.city=$P{CityParam}]]>
        </queryString>
        <field name="Name" class="java.lang.String"/>
        <field name="Quantity" class="java.lang.Integer"/>
        <field name="FirstName" class="java.lang.String"/>
        <field name="LastName" class="java.lang.String"/>
        <field name="street" class="java.lang.String"/>
    </subDataset>
    <title>
        <band height="70">
            <crosstab isRepeatColumnHeaders="false">
                <reportElement x="0" y="0" width="782" height="70" uuid="d3aca7c7-1165-4cb5-a7ca-e67b01a5b15d"/>
                <crosstabDataset>
                    <dataset>
                        <datasetRun subDataset="Customer_Quantity" uuid="69151f6b-5c48-4d23-b978-e8fdfbf7b631">
                            <datasetParameter name="CityParam">
                                <datasetParameterExpression><![CDATA["Seattle"]]></datasetParameterExpression>
                            </datasetParameter>
                        </datasetRun>
                    </dataset>
                </crosstabDataset>
                <rowGroup name="NameGroup" width="80" totalPosition="None">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{FirstName} + " " + $F{LastName}]]></bucketExpression>
                    </bucket>
                    <crosstabRowHeader>
                        <cellContents style="cell">
                            <textField>
                                <reportElement style="Sans_Bold" x="5" y="0" width="75" height="10" uuid="7f161b84-95ad-4ce4-b619-dfdabb44899e"/>
                                <textFieldExpression><![CDATA[$V{NameGroup}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabRowHeader>
                </rowGroup>
                <columnGroup height="0" name="dummy" totalPosition="End">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[""]]></bucketExpression>
                    </bucket>
                    <crosstabColumnHeader>
                        <cellContents>
                        </cellContents>
                    </crosstabColumnHeader>
                    <crosstabTotalColumnHeader>
                        <cellContents style="cell">
                            <staticText>
                                <reportElement style="Sans_Bold" x="0" y="0" width="80" height="50"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                                <text><![CDATA[Street]]></text>
                            </staticText>
                        </cellContents>
                    </crosstabTotalColumnHeader>
                </columnGroup>
                <columnGroup name="ProductGroup" height="50" totalPosition="End" headerPosition="Stretch">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{Name}]]></bucketExpression>
                    </bucket>
                    <crosstabColumnHeader>
                        <cellContents style="cell">
                            <textField>
                                <reportElement style="Sans_Bold" x="0" y="0" width="20" height="50" uuid="2af151be-c117-41c0-864d-279ef72186ec"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle" rotation="Left"/>
                                <textFieldExpression><![CDATA[$V{ProductGroup}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabColumnHeader>
                    <crosstabTotalColumnHeader>
                        <cellContents backcolor="#FFFF60" mode="Opaque" style="cell">
                            <staticText>
                                <reportElement style="Sans_Bold" x="0" y="0" width="30" height="50" uuid="036e9415-01db-4725-8eeb-467f4ae992ab"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                                <text><![CDATA[TOTAL]]></text>
                            </staticText>
                        </cellContents>
                    </crosstabTotalColumnHeader>
                </columnGroup>
                <measure name="QuantityMesure" class="java.lang.Integer" calculation="Sum">
                    <measureExpression><![CDATA[$F{Quantity}]]></measureExpression>
                </measure>
                <measure name="street" class="java.lang.String" calculation="Nothing">
                    <measureExpression>$F{street}</measureExpression>
                </measure>
                <crosstabCell width="20" height="10">
                    <cellContents backcolor="#FFFFFF" mode="Opaque" style="cell">
                        <textField>
                            <reportElement x="0" y="0" width="20" height="10" uuid="ee3abbdf-bec7-4b0f-9d5a-7ed46e897fd0"/>
                            <textElement textAlignment="Center" verticalAlignment="Middle"/>
                            <textFieldExpression><![CDATA[$V{QuantityMesure}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell width="30" height="10" columnTotalGroup="ProductGroup">
                    <cellContents backcolor="#FFFF60" mode="Opaque" style="cell">
                        <textField>
                            <reportElement x="0" y="0" width="30" height="10" uuid="6747a993-1322-4432-ad74-dbbec94ee758"/>
                            <textElement textAlignment="Center" verticalAlignment="Middle"/>
                            <textFieldExpression><![CDATA[$V{QuantityMesure}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell width="80" height="10" columnTotalGroup="dummy">
                    <cellContents style="cell">
                        <textField>
                            <reportElement x="0" y="0" width="80" height="10"/>
                            <textElement textAlignment="Center" verticalAlignment="Middle"/>
                            <textFieldExpression><![CDATA[$V{street}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
            </crosstab>
        </band>
    </title>
</jasperReport>
© www.soinside.com 2019 - 2024. All rights reserved.