gpt4 book ai didi

jasper-reports - 如何合并同一列中的单元格,应用行跨度?

转载 作者:行者123 更新时间:2023-12-03 14:04:54 75 4
gpt4 key购买 nike

在我的报告的 jrxml 设计中,我的详细信息部分中有一个列为特定组打印相同的内容。例如,如果我有一个国家列美国,下一列包含它的州。国家 USA 对每个条目重复。所以我需要合并具有美国值(value)的国家/地区单元格。我需要合并列的所有单元格具有相同的值,并应将其显示为单个单元格,并且应将其文本垂直和水平居中对齐。任何人都可以帮助我如何使用 jrxml 实现这一目标?

一切都在细节带中。

我正在努力获得如下图所示的报告

enter image description here

更新:

从彼得的回答我有一个疑问,如果我的 xml 是这样的:

<report>
<row1>
<country>INDIA</country>
<state>Haryana</state>
</row1>
<row2>
<country>INDIA</country>
<state>Punjab</state>
</row2>
<row3>
<country>INDIA</country>
<state>Maharashtra</state>
</row3>
</report>

如果我的 xml 与上述类似,我该如何创建报告?

最佳答案

您可以相当容易地实现 文本在顶部垂直对齐 通过使用 isPrintRepeatedValues="false" ,正确设置边框(仅顶部,使用仅左侧的空单元格,向 columnFooter 添加行)。

Top alignment result

实现 “文本垂直居中对齐”对其他列使用子报表并设置 stretchType="RelativeToBandHeight"在您的 rowspan 列上。

请注意,在这种情况下,您需要更改数据源(主报告、国家/地区、相对于国家/地区的所有状态的子报告)

Align center

编辑 :评论:这不适用于详细乐队。彼得 - @Tinoy Malayil。

我包括一个可运行的示例,用于在中心垂直对齐的文本:

数据源 xml:

<report>
<country>
<name>INDIA</name>
<states>
<state>Haryana</state>
<state>Punjab</state>
<state>Maharashtra</state>
<state>Karnataka</state>
<state>TamilNadu</state>
</states>
</country>
<country>
<name>USA</name>
<states>
<state>Alabama</state>
<state>Washington</state>
<state>Alaska</state>
<state>Texas</state>
</states>
</country>
</report>

主报告: , country.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="Country" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" uuid="dbc44bea-4f8e-4072-9c94-8442f3093aa0">
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["C:\\fullPath\\to\\Your\\subreport\\"]]></defaultValueExpression>
</parameter>
<queryString language="xPath">
<![CDATA[report/country]]>
</queryString>
<field name="name" class="java.lang.String">
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<background>
<band/>
</background>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="177" height="20" uuid="d4eb7868-2f74-4713-abca-a176c47927e1"/>
<box>
<pen lineWidth="0.25"/>
<topPen lineWidth="0.25"/>
<leftPen lineWidth="0.25"/>
<bottomPen lineWidth="0.25"/>
<rightPen lineWidth="0.25"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[COUNTRY]]></text>
</staticText>
<staticText>
<reportElement x="177" y="0" width="200" height="20" uuid="98cbcff7-6b24-43bd-a2df-39cc07e56487"/>
<box>
<pen lineWidth="0.25"/>
<topPen lineWidth="0.25"/>
<leftPen lineWidth="0.25"/>
<bottomPen lineWidth="0.25"/>
<rightPen lineWidth="0.25"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[STATE]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20">
<textField>
<reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="177" height="20" uuid="1bbab3e7-f8a3-48c9-b28e-2a6d2a68b755"/>
<box topPadding="0" leftPadding="0">
<pen lineWidth="0.25"/>
<topPen lineWidth="0.25"/>
<leftPen lineWidth="0.25"/>
<bottomPen lineWidth="0.25"/>
<rightPen lineWidth="0.25"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<subreport>
<reportElement x="177" y="0" width="200" height="20" uuid="6314908a-006d-4a5b-9137-a056eb205529"/>
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/country/states/state")]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "country_subreport.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
</jasperReport>

子报表 , country_subreport.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="country_subreport" language="java" pageWidth="200" pageHeight="500" columnWidth="200" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="c9795fb7-39e0-4aa6-8926-2f019c4af84e">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString language="xPath">
<![CDATA[/report/country/states/state]]>
</queryString>
<field name="state" class="java.lang.String">
<fieldDescription><![CDATA[child::text()]]></fieldDescription>
</field>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="200" height="20" uuid="dc0a9dda-b940-4752-ad91-31420c4ce729"/>
<box topPadding="2" leftPadding="2">
<pen lineWidth="0.25"/>
<topPen lineWidth="0.25"/>
<leftPen lineWidth="0.25"/>
<bottomPen lineWidth="0.25"/>
<rightPen lineWidth="0.25"/>
</box>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{state}]]></textFieldExpression>
</textField>
</band>
</detail>

关于jasper-reports - 如何合并同一列中的单元格,应用行跨度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34171805/

75 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com