1

私はJasperReports4.0.2を使用しています(長期的にはそれに結び付けられていませんが、今のところはそうです)。

3列のデータをサポートするように設定されたサブレポートに問題があります。印刷されている2つのテキストフィールドがあり、データがテキストフィールドに対して長すぎる場合、データは切り捨てられます。JasperReportのアドバイスに従った後-テキストフィールドの投稿に長いテキストを表示するためにテキストをラップする私はまだデータを表示するためにテキストフィールドを適切にオーバーフローさせるのに苦労しています。

これが私のレポートファイルです:

<?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="record" language="groovy" columnCount="3" printOrder="Horizontal" pageWidth="572" pageHeight="752" columnWidth="157" columnSpacing="50" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <field name="geoName" class="java.lang.String"/>
    <field name="count" class="java.lang.Integer"/>
    <variable name="count" class="java.lang.String">
        <variableExpression><![CDATA[new java.text.DecimalFormat("###,###,###,###").format($F{count})]]></variableExpression>
    </variable>
    <background>
        <band splitType="Stretch"/>
    </background>
    <detail>
        <band height="15" splitType="Stretch">
            <textField isStretchWithOverflow="true">
                <reportElement x="0" y="0" width="90" height="15" stretchType="RelativeToBandHeight" positionType="Float"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="Arial"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{geoName}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true">
                <reportElement x="90" y="0" width="67" height="15" stretchType="RelativeToBandHeight" positionType="Float"/>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font fontName="Arial"/>
                </textElement>
                <textFieldExpression><![CDATA[$V{count}]]></textFieldExpression>
             </textField>
             <line>
                <reportElement x="182" y="0" width="1" height="15" forecolor="#CCCCCC" stretchType="RelativeToBandHeight" positionType="Float"/>
            </line>
        </band>
    </detail>
</jasperReport>

レポートは通常、適切に機能し、水平方向に拡張されますが、いずれかのテキストフィールドのデータが長すぎる場合は、単に切り捨てられます。私が持っている唯一の回避策はバンドサイズを大きくすることですが、それはよく見えません。私もisPrintWhenDetailOverflows="true"旗を試しました。

4

1 に答える 1

2

私は自分の答えを見つけました、そしてそれはジャスパーの単なる制限です。

http://jasperreports.sourceforge.net/sample.reference/horizo​​ntal/index.html

レポートテンプレートを水平方向に入力する場合、詳細セクション内の動的テキストフィールドは、テキストコンテンツ全体に拡大されません。これは、後続の詳細セクションの水平軸にずれが生じる可能性があるためです。詳細バンドは、実際にはページおよび列のフッターと同じように動作し、水平方向の塗りつぶしが使用されたときに宣言された高さを保持します。

非常に長い話ですが、水平方向に塗りつぶすと、垂直方向の拡張も期待できません。

于 2012-09-28T17:41:48.567 に答える