web-dev-qa-db-ja.com

JasperReportsの外部スタイル

JasperReports を使用して生成された多数のレポートを含むシステムに取り組んでいます。新しい機能の1つは、レポートのスタイルを定義できることです。

利用可能なドキュメントから、使用するスタイルを定義する外部ファイルを作成する方法があると思います。それは、jasperレポートで参照できます。これにより、1つのスタイルを複数のレポートで使用できます。

これが実際の機能であるかどうか、実際の機能である場合はその使用方法に関する具体的な情報が見つかりません。ジャスパーレポートに外部スタイルを設定できるかどうか、また可能であれば、その方法を知っている人はいますか?

23
Jamie Love

JasperReportテンプレート を使用します。 JasperReportsテンプレートは、.jrtxで終わるテンプレートであり、次のようになります(styles.jrtx):

<?xml version="1.0"?>
<!DOCTYPE jasperTemplate
  PUBLIC "-//JasperReports//DTD Template//EN"
  "http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd">

<jasperTemplate>
    <style name="Report Title" isDefault="false" hAlign="Center" fontSize="24" isBold="true"/>
    <style name="Heading 1" isDefault="false" fontSize="18" isBold="true"/>
    <style name="Heading 2" isDefault="false" fontSize="14" isBold="true"/>
</jasperTemplate>

次に、.jrxmlファイルにテンプレートとして含めます。

...
<template>"styles.jrtx"</template>
...

iReportもこれを理解しているため、スタイルがインポートされ、iReportに正しく表示されます(ただし、リロードや再コンパイルが必要な場合は、スタイルが取得されないことがあります)。

29
Jamie Love

実行時にレポートに渡されるパラメーターを使用して、<template>要素に実際のファイル名を指定することを回避することもできます。

<parameter name="TEMPLATE_FILE" isForPrompting="false" class="Java.lang.String"/>

<template><![CDATA[$P{TEMPLATE_FILE}]]></template>

ここで、$ P {TEMPLATE_FILE}はスタイルリソースへのフルパスです。

9
Donal

BilalSiddiquiによるJasperReportDevelopmentクックブックという本から、私のようなレポートデザイナーにとって非常に役立つと思うJasperレポートでのスタイルの使用に関する私の学習を共有したいと思います。私はこの本が好きで、次のようなさまざまな方法でスタイルを示すことがわかりました。

  • 再利用可能なスタイルの作成
    新しいレポートを作成するときに「スタイル」を選択し、テキスト、線、長方形のスタイルを定義するだけです。スタイルファイルは.jrtxファイルとして保存されます。

  • レポートに再利用可能なスタイルをインポートします
    レポートにスタイルをインポートする場合、3つの情報があります。ステップ1。スタイルテンプレートの名前と場所

<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>

ステップ2。スタイルテンプレートを使用してレポート要素にスタイルを適用するたびに、<reportElement>タグは次のように作成されます。

//style applied to a rectangle
<rectangle radius="10">
    <reportElement style="BigBoldRed" mode="Transparent" x="0" y="0" width="555" height="44"/>
</rectangle>
//style applied to a the text field
<staticText>
        <reportElement style="BigBoldRed" x="0" y="0" width="555" height="66"/>
        <textElement textAlignment="Center" verticalAlignment="Middle"/>
        <text><![CDATA[Monthly Customer Invoices]]></text>
</staticText>
  • レポート内の内部スタイルと再利用可能なスタイルの混合
  • HTMLの力を使用してレポートのスタイルを設定する
    たとえば、テキストフィールドには、HTMLタグを含む次の式があります(例:<li>)そしてHTMLタグをレポートデザインで機能させたい:
"<li>"+"Invoice # "+$F{InvoiceID}+", "+

$ F {CustomerName} + "は" + $ F {InvoicePeriod} + "で" + $ F {ProductName} + "を購入しました(請求書の値:\ $" + $ F {InvoiceValue} + ")" + "

解決策は簡単です。テキストフィールドの「Markup」プロパティを「Styled」に設定するだけです。

この投稿のJasperReportsクックブックからコードチャンクをコピーする許可を著者から取得しました。

5
roshani