6

HTML 形式で表示される Jasper レポートがいくつかあります。すべてのデータが表示されるように、HTML テーブルの列の幅を (その列の) 最も幅の広いセルの内容に合わせて自動的にサイズ変更したいと考えています。

現在、Jasper によって生成された HTML は <table> および一部の <td> 要素に対して固定幅を指定しているため、これは発生しません。

<td style="width: 20px; height: 17px;">
  <span style="font-family: Arial; font-size: 11px;">foo-bar-baz@examp</span>
</td>

これらの幅のプロパティを (JavaScript を使用して) 単純にすべて削除することはできません。これは、(上記の HTML に示されているように) これらの幅を使用すると非表示になるデータがクライアント側に返されることさえないためです。

乾杯、ドン

4

3 に答える 3

6

完全ではありませんが、フィールドにフラグを立ててオーバーフローで伸ばすことができます。これにより、少なくともすべてのデータが得られます。jrxml ファイルでは、次のようになります。

<textField isStretchWithOverflow="true" hyperlinkType="None">
    <reportElement style="Report Sub-Title" x="0" y="84" width="802" height="20"/>
    <textElement/>
    <textFieldExpression class="java.lang.String">
        <![CDATA["For the period ...]]>
    </textFieldExpression>
</textField>

残念ながら、列幅の動的なサイズ変更を可能にする Jasper レポートの機能については知りません。これはおそらく、HTML では意味のあるものの 1 つですが、PDF などの他の出力形式ではほとんど意味がありません。

于 2008-11-20T20:48:40.923 に答える
4

開発者は、セルの幅が伸びないように意識的に決定しました。コンテンツに基づいて列の幅を変更するには、プログラミングによって行う必要があります。便利なツール: DynamicJasper

DynamicJasper はレポートを動的に作成し、実行時に列、列幅 (自動幅)、グループ、変数、フォント、グラフ、クロス集計、サブ レポート (動的にすることもできます)、ページ サイズ、および設計時に定義できるその他すべてを定義します。 .

JasperReports フォーラムDynamicJasper HOW-TOの両方に、自動 (動的) 列幅の例があります。

FastReportBuilder drb = new FastReportBuilder();
drb.addColumn("State", "state", String.class.getName(),20)
        .addColumn("Branch", "branch", String.class.getName(),30)
        .addColumn("Quantity", "quantity", Long.class.getName(),60,true)
        .addColumn("Amount", "amount", Float.class.getName(),70,true)
        .addBarcodeColumn("Bar-Code", "amount", Long.class.getName(), BarcodeTypes.USD3, true,
false,null, 100, true, ImageScaleMode.FILL, null)
        .addGroups(1)
        .setDetailHeight(30)
        .setTitle("November 2006 sales report")
        .setSubtitle("This report was generated at " + new Date())
        .setUseFullPageWidth(true);     

DynamicReport dr = drb.build();

true呼び出し時に渡すことは、固定addColumnを使用することを示します。パラメータをオフのままにするか渡すと、列幅が動的に設定されます。自動幅をアクティブにするために呼び出す必要がある場合もありますが、この点についてはわかりません。falsesetUseFullPageWidth( true )

于 2011-04-07T17:13:32.273 に答える
-2

iReport には、「ストレッチ タイプ」というオプションがあります。「バンドの高さを基準」を選択します

于 2009-09-03T15:18:38.403 に答える