我正在使用 iReport 和 Jasper Reports 4.5.0 构建报告。一切正常,除了我有一个要求,在一些我还无法解决的表格的格式中。有些列需要有标题(将两列或更多列分组)和副标题(每个列),我不知道如何实现这一点。
这是所需的最终“样式”的示例:
| POSITION |column 2|column 3|
| x | Y | | |
------------------------------
| 10 | 20 |value|value
我正在使用 iReport 和 Jasper Reports 4.5.0 构建报告。一切正常,除了我有一个要求,在一些我还无法解决的表格的格式中。有些列需要有标题(将两列或更多列分组)和副标题(每个列),我不知道如何实现这一点。
这是所需的最终“样式”的示例:
| POSITION |column 2|column 3|
| x | Y | | |
------------------------------
| 10 | 20 |value|value
我觉得你想多了。如果您没有对数据使用分组,根据您的示例,您似乎没有这样做,那么这是非常基本的。
列标题不过是静态文本字段。您可以将它们添加到列标题带中的任何位置。这是一个 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>
我能够通过以下过程获得带有多页报告的多行列标题:
第 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>
我遇到了同样的麻烦,但使用的是表格组件,如果没有任何行,则需要第一列不显示(使用列标题方法没有按我的意愿工作)
所以我解决了这个问题,使用columnGroup
包装我需要的所有列(在你的例子中,位置列)设置为 0 我不想显示的行的高度(在下面的示例 JRXML 部分中,你会在,和)columnGroup
的标签tableFooter
columnHeader
columnFooter
下面的示例是一个表格组件,它会产生类似这样的结果
+-------------------+
| 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>