2

我正在使用 iReport 和 Jasper Reports 4.5.0 构建报告。一切正常,除了我有一个要求,在一些我还无法解决的表格的格式中。有些列需要有标题(将两列或更多列分组)和副标题(每个列),我不知道如何实现这一点。

这是所需的最终“样式”的示例:

| POSITION |column 2|column 3|
| x  |  Y  |        |        |
------------------------------
| 10 | 20 |value|value
4

3 回答 3

1

我觉得你想多了。如果您没有对数据使用分组,根据您的示例,您似乎没有这样做,那么这是非常基本的。

列标题不过是静态文本字段。您可以将它们添加到列标题带中的任何位置。这是一个 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="report1" language="groovy" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="b478862e-b118-4290-8664-eae9b2966b31">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <parameter name="GROUP_BY" class="java.lang.String">
        <defaultValueExpression><![CDATA[]]></defaultValueExpression>
    </parameter>
    <field name="x" class="java.lang.String"/>
    <field name="y" class="java.lang.String"/>
    <field name="column1" class="java.lang.String"/>
    <field name="column2" class="java.lang.String"/>
    <columnHeader>
        <band height="40" splitType="Stretch">
            <staticText>
                <reportElement uuid="039d11f3-52eb-4717-9c83-34cbdcb81d6a" x="0" y="20" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[x]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="f0d66af8-19c2-4d50-9d1a-37b1162a75a8" x="100" y="20" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[y]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="44e3960a-31f3-444c-ad32-061af30cf82c" x="200" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[column1]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="6d468249-5242-4cf6-a4db-7995bdea15ba" x="300" y="1" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[column2]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="461dc8bb-a938-42ed-86c5-006732fbba4f" x="0" y="0" width="200" height="20"/>
                <textElement/>
                <text><![CDATA[Position]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="23" splitType="Stretch">
            <textField>
                <reportElement uuid="e2aff92b-0f47-4f78-9f49-c861c04533be" x="0" y="3" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{x}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="6091fb48-0bb6-422e-8520-b6e2d6e5cce1" x="100" y="3" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{y}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="8b32925f-256c-4026-a3f1-8e435a12ccd0" x="200" y="3" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{column1}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="8b9d0540-da1a-41bf-b7e8-5f2cf9141fb6" x="300" y="3" width="100" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{column2}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>
于 2012-07-03T20:02:12.903 回答
1

我能够通过以下过程获得带有多页报告的多行列标题:

JasperReports_TwoLineTableHeader

  1. 将表格的列标题高度设置为 40px
  2. 第 1 列和第 2 列有一个单行标题,因此它们的文本框高度 = 40px
    • 下面的代码包含第 1 列“收集系统”的 xml,但为便于阅读,第 2 列省略了)
  3. I 将列 3-5 分组
    • 列组宽度=“240”
    • 列标题高度=“40”
    • textbox1 "分配生产": x="0" y="0" width="240" height="20"
    • textbox2 "气体 MCF": x="0" y="20" width="80" height="20"
    • textbox3 "油": x="80" y="20" width="80" height="20"
    • textbox3 "水": x="160" y="20" width="80" height="20"

第 1 列

<jr:column width="200" uuid="5255e943-4959-49c4-9f83-0c6567d56684">
    <jr:groupFooter groupName="GatheringGroup_dsSixMonths">
        <jr:cell style="Alternate_Row" height="20" rowSpan="1">
            <property name="com.jaspersoft.studio.unit.height" value="px"/>
            <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
            <property name="com.jaspersoft.studio.unit.width" value="px"/>
            <textField isStretchWithOverflow="true" pattern="#,##0.00">
                <reportElement x="0" y="0" width="200" height="20" uuid="78a4370a-8d3e-4bae-9a58-47b5b947189c"/>
                <textFieldExpression><![CDATA[$F{GatheringSystem.GatheringSystemName}]]></textFieldExpression>
            </textField>
        </jr:cell>
    </jr:groupFooter>                   
    <jr:columnHeader height="40" rowSpan="1">
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
        <property name="com.jaspersoft.studio.unit.width" value="px"/>
        <staticText>
            <reportElement style="Crosstab_Header" x="0" y="0" width="200" height="40" uuid="9b4976a1-5deb-4edf-a4a7-39bd4375663d">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
            </reportElement>
            <text><![CDATA[Gathering System]]></text>
        </staticText>
    </jr:columnHeader>
    <jr:detailCell height="0">
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
    </jr:detailCell>
</jr:column>    

第 3-5 列 - 列组有宽度 =“240”像素

<jr:columnGroup width="240" uuid="dc55dcaa-91d3-4450-9300-3aaea94c789a">
            <property name="com.jaspersoft.studio.components.table.model.column.name" value="Columns [3]"/>
            <property name="com.jaspersoft.studio.unit.height" value="pixel"/>

            <jr:columnHeader style="Table 1_CH" height="40">
                <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
                <property name="com.jaspersoft.studio.unit.height" value="px"/>

第一个文本框“Allocated Production”的高度=“20”像素,宽度=“240”

                <staticText>
                    <reportElement style="Crosstab_Header" x="0" y="0" width="240" height="20" uuid="1308d33c-05c3-4a0b-8fb3-6247693a95b6">
                        <property name="com.jaspersoft.studio.unit.height" value="px"/>
                        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
                        <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                        <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                    </reportElement>
                    <text><![CDATA[Allocated Production]]></text>
                </staticText>

第二个文本框“Gas MCF”有 height="20"px, width="80", 位于 x=0, y=20

                <staticText>
                    <reportElement style="Crosstab_Header" x="0" y="20" width="80" height="20" uuid="3b3cacbb-232c-4a5c-afd7-e069213d6eac">
                        <property name="com.jaspersoft.studio.unit.height" value="px"/>
                        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
                        <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                        <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                    </reportElement>
                    <text><![CDATA[Gas MCF]]></text>
                </staticText>

第三个文本框“Oil”位于 x=80, y=20

                <staticText>
                    <reportElement style="Crosstab_Header" x="80" y="20" width="80" height="20" uuid="6fd8d11e-b10c-4530-aaa7-2b2066ddc1de">
                        <property name="com.jaspersoft.studio.unit.height" value="px"/>
                        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
                        <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                    </reportElement>
                    <text><![CDATA[Oil]]></text>
                </staticText>

最后一个文本框“水”位于 x=160, y=20

                <staticText>
                    <reportElement style="Crosstab_Header" x="160" y="20" width="80" height="20" uuid="4402b753-1d83-4e19-9467-47c6d5d7b173">
                        <property name="com.jaspersoft.studio.unit.height" value="px"/>
                        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
                    </reportElement>
                    <text><![CDATA[Water]]></text>
                </staticText>
            </jr:columnHeader>
于 2017-09-06T18:42:36.373 回答
0

我遇到了同样的麻烦,但使用的是表格组件,如果没有任何行,则需要第一列不显示(使用列标题方法没有按我的意愿工作)

所以我解决了这个问题,使用columnGroup包装我需要的所有列(在你的例子中,位置列)设置为 0 我不想显示的行的高度(在下面的示例 JRXML 部分中,你会在,和)columnGroup的标签tableFootercolumnHeadercolumnFooter

下面的示例是一个表格组件,它会产生类似这样的结果

+-------------------+
|     POSITION      |                       
+-------------------+---------------+---------------+
|    x    |    y    |    Column1    |    Column2    |
+---------+---------+---------------+---------------+
|  $F{x}  |  $F{Y}  |  $F{column1}  |  $F{column2}  |
+-------------------+---------------+---------------+

JRXML 代码:

<componentElement>
<reportElement x="0" y="0" width="555" height="100" uuid="b3ffd7ef-3e0f-48be-8405-545f6c9cd313"/>
<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="YOURTABLEDATASET" uuid="5f5f5dc3-96fa-40a7-b9ce-0741bf321af6">
        <connectionExpression>YOURCONNECTIONORDATASOURCE</connectionExpression>
    </datasetRun>
    <jr:columnGroup width="340" uuid="10695d6d-0223-4bf7-93e0-82d8ff720988">
        <property name="local_mesure_unitheight" value="pixel"/>
        <jr:tableHeader height="40">
            <staticText>
                <reportElement x="0" y="0" width="340" height="40" uuid="708fab06-2d51-4e70-b17a-4c3b30ebf188"/>
                <textElement verticalAlignment="Bottom"/>
                <text><![CDATA[POSITION]]></text>
            </staticText>
        </jr:tableHeader>
        <jr:tableFooter height="0"/>
        <jr:columnHeader height="0"/>
        <jr:columnFooter height="0"/>
        <jr:column width="170" uuid="80cd4d4e-f92d-4144-8f03-1fdf8662d52f">
            <jr:columnHeader height="30">
                <staticText>
                    <reportElement x="0" y="0" width="170" height="30" uuid="ae24719f-dd68-41d8-9e1f-fffb458309d0"/>
                    <text><![CDATA[x]]></text>
                </staticText>
            </jr:columnHeader>
            <jr:detailCell height="30">
                <textField>
                    <reportElement x="0" y="0" width="170" height="30" uuid="53731196-ea6f-4378-b99a-22ee9f9ea4ba"/>
                    <textFieldExpression><![CDATA[$F{x}]]></textFieldExpression>
                </textField>
            </jr:detailCell>
        </jr:column>
        <jr:column width="170" uuid="ae1bfc2b-69c6-422e-8db0-150ec8d66973">
            <jr:columnHeader height="30">
                <staticText>
                    <reportElement x="0" y="0" width="170" height="30" uuid="93c5f52e-67d6-40c9-afd8-1e867104d9b0"/>
                    <text><![CDATA[y]]></text>
                </staticText>
            </jr:columnHeader>
            <jr:detailCell height="30">
                <textField>
                    <reportElement x="0" y="0" width="170" height="30" uuid="60320299-d2fa-46d6-87c0-25dbe7b14d92"/>
                    <textFieldExpression><![CDATA[$F{y}]]></textFieldExpression>
                </textField>
            </jr:detailCell>
        </jr:column>
    </jr:columnGroup>
    <jr:column width="100" uuid="a2eed3c8-5862-4026-b5b3-dd516f850b44">
        <jr:columnHeader height="30">
            <staticText>
                <reportElement x="0" y="0" width="100" height="30" uuid="9b694559-1a3d-4e68-abfe-7cd95ad447de"/>
                <text><![CDATA[column1]]></text>
            </staticText>
        </jr:columnHeader>
        <jr:detailCell height="30">
            <textField>
                <reportElement x="0" y="0" width="100" height="30" uuid="6c22c7d4-dde9-42f7-8564-a229e235a186"/>
                <textFieldExpression><![CDATA[$F{column1}]]></textFieldExpression>
            </textField>
        </jr:detailCell>
    </jr:column>
    <jr:column width="100" uuid="d57153ea-a883-4b2e-b351-b0950f4aae0d">
        <property name="local_mesure_unitwidth" value="pixel"/>
        <jr:columnHeader height="30">
            <staticText>
                <reportElement x="0" y="0" width="100" height="30" uuid="e64920ab-19de-4108-a63b-fea1484b5ba3"/>
                <text><![CDATA[column2]]></text>
            </staticText>
        </jr:columnHeader>
        <jr:detailCell height="30">
            <textField>
                <reportElement x="0" y="0" width="100" height="30" uuid="bfafd138-ed50-4fb4-91f4-61df26ab66fa"/>
                <textFieldExpression><![CDATA[$F{column2}]]></textFieldExpression>
            </textField>
        </jr:detailCell>
    </jr:column>
</jr:table>

于 2013-12-19T15:15:57.753 回答