我正在使用iReport和Jasper Reports 4.5.0构建报告。除了我有一个要求之外,它的一切工作正常,在一些表的格式化中我还无法解决。 有些列需要有标题(分组两列或更多列)和副标题(每一列),我无法弄清楚如何实现这一点。
以下是所需最终“风格”的示例:
| POSITION |column 2|column 3|
| x | Y | | |
------------------------------
| 10 | 20 |value|value
答案 0 :(得分:0)
我认为你在想这个。如果您没有对基于您的示例的数据使用分组,那么您似乎没有这样做,那么这是非常基本的。
列标题只是静态文本字段。并且您可以在Column Header带中的任何位置添加它们。这是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 :(得分:0)
我遇到了同样的麻烦,但是使用了Table Component并且需要第一列没有出现,如果没有任何行(Column Header方法没有按照我想要的方式工作)
所以我使用columnGroup
解决了这个问题,将我需要的所有列(在你的例子中,POSITION列)设置为0我不想显示的行的高度(在示例JRXML部分中)您可以在columnGroup
,tableFooter
和columnHeader
的{{1}}标签之间看到它
以下示例是一个表格组件,可以产生类似这样的内容
columnFooter
JRXML代码:
+-------------------+
| POSITION |
+-------------------+---------------+---------------+
| x | y | Column1 | Column2 |
+---------+---------+---------------+---------------+
| $F{x} | $F{Y} | $F{column1} | $F{column2} |
+-------------------+---------------+---------------+
答案 2 :(得分:0)
我能够通过以下过程获得包含多页报告的多行列标题:
第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>
Cols 3-5 - COLUMN GROUP HAS width =&#34; 240&#34;像素
<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"/>
第一个文本框&#34;分配的生产&#34;有高度=&#34; 20&#34; px,宽度=&#34; 240&#34;
<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>
第二个文本框&#34; Gas MCF&#34;有高度=&#34; 20&#34; px,宽度=&#34; 80&#34;,位于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>
第三个文本框&#34; Oil&#34;位于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>
最后一个文字框&#34; Water&#34;位于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>