Jasper-reports-jasper-creating-charts

提供:Dev Guides
移動先:案内検索

チャートを作成する

以前の人々は、スクリプトレットに依存してチャートデータを収集し、レポートテンプレートの画像要素を使用してチャートをレンダリングする必要がありました。 JasperReportsでは、新しいチャートコンポーネントを使用したチャートのサポートが組み込まれているため、簡単になりました。

ユーザーは新しいチャートコンポーネントを使用して、視覚的な設定のみを適用し、チャートデータセットの構築に役立つ式を定義する必要があります。 JasperReportsは、基になるチャートライブラリとしてJFreeChartを使用します。 新しいチャートコンポーネントを設定する場合、次の3つのコンポーネントが関係します-

  • 全体的なチャートコンポーネント。
  • チャートデータセット(チャートデータ関連の設定をグループ化)。
  • チャートプロット(チャートアイテムのレンダリング方法に関連する視覚的な設定をグループ化します)。

JasperReportsは現在、円グラフ、円グラフ3D、棒グラフ、棒グラフ3D、XY棒グラフ、積み上げ棒グラフ、積み重ね棒グラフ3D、線、XY線、面、XY面、積み上げ面、散布図、バブル、時系列、高-低-開-閉、ローソク足、多軸、メーター、温度計、ガント。

チャートのプロパティ

チャートは通常のレポート要素なので、他のすべてのレポート要素とプロパティの一部を共有します。 すべてのタイプのチャートを作成するために使用される、<* chart *>と呼ばれるJRXML要素があります。 この要素は、すべてのタイプのチャートに適用される特別なチャート固有の設定をグループ化します。

グラフのサブ要素

<chart>要素のサブ要素は-

  • <reportElement> -これらは、レポートテンプレートセクションに配置する静的テキスト、テキストフィールド、画像、線、長方形などの表示可能なオブジェクトです。
  • <Box> -この要素は、各辺でカスタマイズ可能な境界線でチャートを囲むために使用されます。
  • <chartTitle> -この要素は、チャートのタイトルを配置するために使用されます。 position_属性は、レポート内のチャートのタイトル位置を決定します。 この要素には属性があります-位置(値は_Top _、 Bottom Left Right_です。 デフォルト値は_Top _)、 color です。 <chartTitle>には、サブ要素として_font_と_titleExpression_があります。
  • <chartSubtitle> -この要素は、チャートのサブタイトルを配置するために使用されます。 この要素には属性- color があります。 <chartSubtitle>には、_font_と_subtitleExpression_がサブ要素としてあります。
  • <chartLegend> -要素は、この要素を使用して、グラフの凡例のテキスト色と背景色だけでなく、フォント関連のプロパティも制御できます。 この要素には、 textColor および backgroundColor という属性があります。
  • <anchorNameExpression> -この要素は、アンカーのターゲットを作成します。
  • <hyperlinkReferenceExpression> -この要素には、外部リソース(通常はURL)の名前を示すレポート式が含まれます。
  • <hyperlinkAnchorExpression> -ハイパーリンクは外部リソースのアンカーを指します。
  • <hyperlinkPageExpression> -ハイパーリンクは現在のレポートのページを指します。
  • <hyperlinkTooltipExpression> -この要素は、ハイパーリンクのツールチップを制御します。 式のタイプは_java.lang.String_である必要があります。
  • <hyperlinkParameter> -この要素が存在する場合、パラメータ値に応じて最終的なハイパーリンクが生成されます。

チャート属性

すべてのチャートタイプで使用可能な<chart>要素の属性は次のとおりです-

  • isShowLegend -この属性は、グラフの凡例をレポートに表示するかどうかを決定するために使用されます。 値は_true_または_false_です。 デフォルト値は_true_です。
  • evaluationTime -チャートの式がいつ評価されるかを決定します。 値は、Now _、 Report Page Column Group Band_です。 デフォルト値は_Now_です。
  • evaluationGroup -この属性は、チャートの式を評価するために使用されるグループの名前を決定します。 この属性の値は、グループの名前と一致する必要があります。チャートの評価グループとして使用します。
  • hyperlinkType -この属性は任意のテキスト値を保持できます。 デフォルト値は_None_です。 つまり、特殊なハイパーリンク式が存在する場合でも、テキストフィールドも画像もハイパーリンクを表しません。
  • hyperlinkTarget -この属性は、ビューアでクリックされたときに指定されたリンクの動作をカスタマイズするのに役立ちます。 値は_Self_または_Blank_の場合があります。 デフォルト値は_Self_です。
  • bookmarkLevel -この属性を正の整数に設定すると、PDFにエクスポートされたレポートにブックマークが生成されます。 デフォルト値は_0_です。
  • customizerClass -これは、チャートのカスタマイズに使用できるクラスの名前(オプション)です。 この要素の値は、カスタマイザークラスの名前を含む文字列でなければなりません。

チャートのカスタマイズ

前述のように、JasperReportsは_JFreeChart_を基になるグラフ作成ライブラリとして使用します。 _JFreeChart_には、JasperReportsで直接サポートされていない機能が含まれています。 <chart>要素の_customizerClass_属性を介してカスタマイザークラスを提供することにより、これらの機能を利用できます。 カスタマイザークラスは何でもありませんが、_net.sf.jasperreports.engine.JRChartCustomizer_インターフェースの実装です。 このインターフェースを実装する最も簡単な方法は、_net.sf.jasperreports.engine.JRAbstractChartCustomizer_クラスを拡張し、パラメーター、フィールド、および変数にアクセスして、レポートデータに基づいてより柔軟なチャートカスタマイズを行うことです。

チャートデータセット

すべてのチャートタイプに共通するプロパティの1つは、<* dataset *>要素です。 チャートデータセットは、レポートデータのマッピングと実行時のチャートデータの取得に役立ちます。 各チャートタイプには、チャートの式を定義するためのさまざまなサブ要素が含まれています。 これらの式は、チャートの生成に使用されるデータを定義します。 これらのサブ要素にはすべて、チャートの式が評価およびリセットされるタイミングを定義する<dataset>要素が含まれます。

JasperReportsでは、各タイプのチャートが特定のデータセット(円、カテゴリ、XY、時系列、期間、XYZ、高低)で動作するため、いくつかのタイプのチャートデータセットを使用できます。 これらの各データセットタイプは、チャートデータセットを定義する_net.sf.jasperreports.engine.JRChartDataset_インターフェイスを実装します。 すべてのチャートデータセットは、同じ方法で初期化および増分されます。ただし、マップするデータまたはデータ系列のタイプのみが異なります。

データセットのプロパティ

以下の表は、要素<dataset>の属性をまとめたものです-

Attribute Description Values
resetType This attribute determines when the value of the chart expression is to be reset. None, Report, Page, Column, Group. Default value is Report.
resetGroup This attribute determines the name of the group at which the chart expression value is reset. The value for this attribute must match the name of any group declared in the JRXML report template.
incrementType This attribute determines when to recalculate the value of the chart expression. None, Report, Page, Column, Group. Default value is "None".
incrementGroup This attribute determines the name of the group at which the chart expression is recalculated. The value for this attribute must match the name of a group declared in the JRXML report template.

次の表は、要素<dataset>のサブ要素をまとめたものです-

Sub element Description
<incrementWhenExpression> The way a chart dataset is incremented can be customized by filtering out unwanted data through the use of this sub element.
<datasetRun> This contains information required to instantiate a report subdataset.

データセットの種類

特定のデータセットの種類は以下で説明されています-

パイデータセット

パイデータセットは、次の式によって特徴付けられます-

  • <keyExpression>-円グラフのスライスを構成するカテゴリを表します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
  • <valueExpression>-データセットの各カテゴリ/キーに対応する値を生成します。 値は常にjava.lang.Numberオブジェクトです。
  • <labelExpression>-この式が欠落している場合、グラフには円グラフの各スライスのデフォルトラベルが表示されます。 java.lang.String値を返すこの式を使用して、円グラフのアイテムラベルをカスタマイズします。
  • <sectionHyperlink>-パイセクションに関連付けられたハイパーリンクを設定します。

カテゴリデータセット

カテゴリデータセットは、以下を含む<categorySeries>要素によって特徴付けられます-

  • <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
  • <categoryExpression>-シリーズ式で指定されたシリーズ内の各値のカテゴリ名を返します。 カテゴリはjava.lang.Comparableオブジェクトです。
  • <valueExpression>-データセットの各カテゴリに対応する値を生成します。 値は常にjava.lang.Numberオブジェクトです。
  • <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
  • <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。

XYデータセット

XYデータセットは、以下を含む<xySeries>要素によって特徴付けられます-

  • <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
  • <xValueExpression>-現在のデータ系列に追加される(x、y)ペアのX値を表すjava.lang.Number値を返します。
  • <yValueExpression>-現在のデータ系列に追加される(x、y)ペアのY値を表すjava.lang.Number値を返します。
  • <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
  • <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。

XYZデータセット

XYZデータセットは、以下を含む<xyzSeries>要素によって特徴付けられます-

  • <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
  • <xValueExpression>-現在のデータ系列に追加される(x、y、z)アイテムのX値を表すjava.lang.Number値を返します。
  • <yValueExpression>-現在のデータ系列に追加される(x、y、z)アイテムのY値を表すjava.lang.Number値を返します。
  • <zValueExpression>-現在のデータ系列に追加される(x、y、z)アイテムのZ値を表すjava.lang.Number値を返します。
  • <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
  • <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。

時系列データセット

時系列データセットは、timePeriod属性と<timeSeries>要素によって特徴付けられます。 timePeriod属性は、データセット内のデータ系列のタイプを指定します。 時系列には、日、月、年、またはその他の事前定義された期間に関連付けられた数値を含めることができます。 可能な値は次のとおりです。_年、四半期、月、週、日-これはデフォルト値です。時間、分、秒、ミリ秒。

<timeSeries>要素には次が含まれます-

  • <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
  • <timePeriodExpression>-上記のtimePeriod属性に設定された値に応じて、エンジンが対応する期間を抽出するjava.util.Date値を返します。
  • <valueExpression>-データセットの現在のシリーズをインクリメントするときに、対応する期間値に関連付けるjava.lang.Number値を返します。
  • <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
  • <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。

期間データセット

期間データセットは、<timePeriodSeries>要素によって特徴付けられます。

  • <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
  • <startDateExpression>-数値が時系列に追加されるときに関連付けられる日付間隔の開始を指定します。
  • <endDateExpression>-数値が時系列に追加されるときに関連付けられる日付間隔の終了を指定します。
  • <valueExpression>-開始日および終了日の式で指定された現在の日付間隔に関連付けるjava.lang.Number値を返します。
  • <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
  • <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。

高低データセット

高低データセットは、次の式によって特徴付けられます-

  • <seriesExpression>-現在、高低チャートまたはローソク足チャート内では1つのシリーズのみがサポートされています。 ただし、この単一のシリーズは、この式によって返されるjava.lang.Comparable値によって識別される必要があり、チャートの凡例のシリーズ名としても使用される必要があります。
  • <dateExpression>-現在の(高、低、オープン、クローズ、ボリューム)アイテムが参照する日付を返します。
  • <highExpression>-java.lang.Number値を返します。この値は、データセットが増分されると系列に追加されるデータ項目の一部になります。
  • <lowExpression>-java.lang.Number値を返します。この値は、データセットが増分されると系列に追加されるデータ項目の一部になります。
  • <openExpression>-java.lang.Number値を返します。この値は、データセットがインクリメントされるときに系列に追加されるデータ項目の一部になります。
  • <closeExpression>-java.lang.Number値を返します。この値は、データセットがインクリメントされるときに系列に追加されるデータ項目の一部になります。
  • <volumeExpression>-現在のデータ項目に使用するボリューム値を返す数値式。 ローソク足チャートにのみ使用されます。
  • <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。

値データセット

これは、単一の値を含む特別なチャートデータセットの実装であり、メーターおよび温度計チャートのレンダリングに使用されます。 値は、<valueExpression>式を使用して収集されます。

チャートプロット

すべてのチャートタイプで使用されるもう1つの一般的なJRXML要素は、<* plot *>要素です。 これにより、方向や背景色などのチャートのいくつかの特性を定義できます。 プロットは、チャートのタイプに基づいて異なります。

プロット属性

以下の表は、<plot>要素の属性をまとめたものです-

Attribute Description Values
backcolor This attribute defines the chart’s background color. Any six digit hexadecimal value is a valid value for this attribute. The hexadecimal value must be preceded by a #.
orientation This attribute defines the chart’s orientation. Horizontal,Vertical Default value is "Vertical"
backgroundAlpha This attribute defines the transparency of the chart’s background color. The valid values for this attribute include any decimal number between 0 and 1, inclusive. The higher the number, the less transparent the background will be. Default value is "1."
foregroundAlpha This attribute defines the transparency of the chart’s foreground colors. The valid values for this attribute include any decimal number between 0 and 1, inclusive. The higher the number, the less transparent the background will be. Default value is "1."
labelRotation This attribute allows rotation of text labels on x-axis to rotate clockwise or anti-clockwise. This attribute applies only to charts for which the x axis is not numeric or does not display dates. Default value is "0.0."

<plot>要素には、サブ要素<seriesColor>があり、属性は_seriesOrder_および_color_です。 この要素は、シリーズの色と、色シーケンス内の位置をカスタマイズします。

チャートプロットの特定の設定

  • piePlot -特定の設定はありません
  • pie3DPlot -_depthFactor_属性、0〜1の範囲の数値を含み、円の深さをプロット領域の高さの割合として表します。
  • barPlot -目盛りラベル、目盛りマークまたはアイテムラベルを表示または非表示にでき、両方の軸の設定を提供します。
  • bar3DPlot -barPlotと同じ設定を提供し、xOffsetおよびyOffset属性を使用して3D効果を生成します。
  • linePlot -アイテムポイントを接続する線を表示または非表示にでき、アイテムポイントに関連付けられた形状を表示または非表示にでき、両方の軸の設定を提供します。
  • scatterPlot -linePlotと同様に、アイテムポイントを接続する線を表示または非表示にでき、アイテムポイントに関連付けられた形状を表示または非表示にでき、両方の軸の設定を提供します。
  • areaPlot -両方の軸の設定を提供します。
  • bubblePlot -scaleType属性を設定することでバブルの寸法を設定でき、両方の軸の設定を提供します。
  • timeSeriesPlot -アイテムポイントを接続する線を表示または非表示にでき、アイテムポイントに関連付けられた形状を表示または非表示にでき、両方の軸の設定を提供します。
  • highLowPlot -開いている目盛りを表示または非表示にすることができ、閉じた目盛りを表示または非表示にすることができ、両方の軸の設定を提供します。
  • candlestickPlot -ボリュームを表示または非表示にすることができ、両方の軸の設定を提供します。
  • meterPlot -ダイヤルの形状、スケール角度、測定単位、ティック間隔、ダイヤルの色、針の色、ティックの色、値の表示フォント、色とフォーマットパターン、データ範囲、メーター間隔の特定の設定が含まれています。
  • thermometerPlot -値の場所、水銀の色、値の行の表示/非表示、値の表示フォント、色とフォーマットパターン、データ範囲、低範囲、中範囲、および高範囲の特定の設定が含まれます。
  • multiAxisChart -プロットに含まれる軸の特定の設定が含まれています。

チャートの種類

JasperReportsは、いくつかのチャートタイプの組み込みサポートを提供します。 それらは以下のようにリストされています-

  • pieChart -パイデータセットとパイプロットの組み合わせ。
  • pie3DChart -PieデータセットとPie 3Dプロットをグループ化します。
  • barChart -カテゴリデータセットと棒グラフの基本的な組み合わせ。
  • bar3DChart -カテゴリデータセットと棒3Dプロットをラップします。
  • xyBarChart -期間データセット、時系列データセット、XYデータセットをサポートし、棒グラフを使用して軸とアイテムをレンダリングします。
  • stackedBarChart -カテゴリデータセットのデータを使用し、棒グラフを使用してそのコンテンツをレンダリングします。
  • stackedBar3DChart -カテゴリデータセットのデータを使用し、Bar 3Dプロットを使用してそのコンテンツをレンダリングします。
  • lineChart -カテゴリデータセットとラインプロットをグループ化します。
  • xyLineChart -XYデータセットとラインプロットをグループ化します。
  • areaChart -カテゴリデータセットのアイテムは、エリアプロットを使用してレンダリングされます。
  • stackedAreaChart -カテゴリデータセットのアイテムは、エリアプロットを使用してレンダリングされます。
  • xyAreaChart -XYデータセットからのデータを使用し、エリアプロットを通してレンダリングします。
  • scatterChart -散布図でXYデータセットをラップします。
  • bubbleChart -XYZデータセットをバブルプロットと組み合わせます。
  • timeSeriesChart -時系列データセットと時系列プロットをグループ化します。
  • highLowChart -High-LowデータセットとHigh-Lowプロットの組み合わせ。
  • candlestickChart -高低データセットからのデータを使用しますが、特別なローソク足プロットを使用します。
  • meterChart -メータープロットのレンダリングオプションを使用して、ダイヤル上の値データセットから単一の値を表示します。
  • thermometerChart -Thermometerプロットのレンダリングオプションを使用して、Valueデータセットの単一の値を表示します。
  • multiAxisChart -複数の範囲軸が含まれ、すべてが共通のドメイン軸を共有しています。

チャートをデモンストレーションするために、新しいレポートテンプレート(jasper_report_template.jrxml)を作成しましょう。 ここでは、<* barChart >要素を<pageHeader>セクションに追加し、< pieChart >を<summary>セクションに追加します。 各被験者について得られたマークをチャートに表示します。 ディレクトリ *C:\ tools \ jasperreports-5.0.1 \ test に保存します。 ファイルの内容は以下のとおりです-

<?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 = "jasper_report_template" pageWidth = "595" pageHeight = "860"
   columnWidth = "515" leftMargin = "40" rightMargin = "40"
   topMargin = "50" bottomMargin = "50">

   <field name = "subjectName" class = "java.lang.String"/>
   <field name = "marks" class = "java.lang.Integer"/>

   <variable name = "countNumber" class = "java.lang.Integer" calculation = "Count">
      <variableExpression>
         <![CDATA[Boolean.TRUE]]>
      </variableExpression>
   </variable>

   <background>
      <band splitType = "Stretch"/>
   </background>

   <title>
      <band height = "79" splitType = "Stretch"/>
   </title>

   <pageHeader>
      <band height = "200">

         <barChart>
            <chart evaluationTime = "Report">
               <reportElement x = "0" y = "0" width = "555" height = "200"/>

               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Bar Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>

            <categoryDataset>
               <dataset incrementType = "None"/>

               <categorySeries>
                  <seriesExpression>
                     <![CDATA[$F{subjectName}]]>
                  </seriesExpression>

                  <categoryExpression>
                     <![CDATA[$F{subjectName}]]>
                  </categoryExpression>

                  <valueExpression>
                     <![CDATA[$F{marks}]]>
                  </valueExpression>

               </categorySeries>
            </categoryDataset>

            <barPlot isShowTickMarks = "false">
               <plot/>
            </barPlot>
         </barChart>

      </band>
   </pageHeader>

   <columnHeader>
      <band height = "20" splitType = "Stretch"/>
   </columnHeader>

   <detail>
      <band height = "20" splitType = "Stretch"/>
   </detail>

   <columnFooter>
      <band height = "20" splitType = "Stretch"/>
   </columnFooter>

   <pageFooter>
      <band height = "20" splitType = "Stretch"/>
   </pageFooter>

   <summary>
      <band height = "400" splitType = "Stretch">

         <pieChart>
            <chart evaluationTime = "Report">
               <reportElement x = "135" y = "0" width = "270" height = "300"/>

               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Pie Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>

            <pieDataset>
               <dataset incrementType = "None"/>

               <keyExpression>
                  <![CDATA[$F{subjectName}]]>
               </keyExpression>

               <valueExpression>
                  <![CDATA[$F{marks}]]>
               </valueExpression>
            </pieDataset>

            <piePlot>
               <plot/>
               <itemLabel/>
            </piePlot>
         </pieChart>

      </band>
   </summary>

</jasperReport>

上記のファイルの詳細は以下のとおりです-

  • 棒グラフの作成に使用されるJRXML要素は、<pageHeader>の</barChart>です。 これには、チャートの寸法と位置を定義する<reportElement>サブ要素を含む</chart>サブ要素が含まれます。
  • 棒グラフの<dataset>要素は、<categoryDataset>と</categoryDataset>のJRXML要素で囲む必要があります。
  • <categoryDataset>には<categorySeries>要素が含まれている必要があります。 この要素は、バーが表すデータ要素(この例ではサブジェクト名)を定義します。
  • <categoryDataset>には、比較のためにデータをカテゴリに分割する方法を定義する要素も含める必要があります。 ここでは、データはサブジェクト名で区切られています。
  • <valueExpression>要素は、チャート内の各バーの値を決定するために使用される式を定義します。 ここでは、「マーク」を使用しています。
  • 円グラフでは、<summary>セクションの下の要素<pieChart>を使用しました。 </chart>サブ要素が含まれています。
  • サブ要素には、チャートのキーとして使用するものを示すレポート式が含まれます。 ここでは、subjectNameを使用しました。
  • サブ要素には、キーの値を計算するために使用される式が含まれます。 ここでは、マークを使用しました。

レポート入力のJavaコードは変更されません。 ファイル C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguides \ JasperReportFill.java の内容は以下のとおりです-

package com.finddevguides;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName =
         "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";

      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource = new
         JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();

      try {
         JasperFillManager.fillReportToFile( sourceFileName,
            parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

各主題について取得したマークを表示するため、POJOを変更する必要があります。 ファイル C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguides \ DataBean.java の内容は次のとおりです-

package com.finddevguides;

public class DataBean {
   private String subjectName;
   private Integer marks;

   public String getSubjectName() {
      return subjectName;
   }

   public void setSubjectName(String subjectName) {
      this.subjectName = subjectName;
   }

   public Integer getMarks() {
      return marks;
   }

   public void setMarks(Integer marks) {
      this.marks = marks;
   }

}

ファイル C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguides \ DataBeanList.java の内容でさえ、以下のように更新する必要があります-

package com.finddevguides;

import java.util.ArrayList;

public class DataBeanList {
   public ArrayList<DataBean> getDataBeanList() {
      ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();

      dataBeanList.add(produce("English", 58));
      dataBeanList.add(produce("SocialStudies", 68));
      dataBeanList.add(produce("Maths", 38));
      dataBeanList.add(produce("Hindi", 88));
      dataBeanList.add(produce("Scince", 78));

      return dataBeanList;
   }

  /*
 *This method returns a DataBean object, with subjectName ,
   * and marks set in it.
    */
   private DataBean produce(String subjectName, Integer marks) {
      DataBean dataBean = new DataBean();

      dataBean.setSubjectName(subjectName);
      dataBean.setMarks(marks);

      return dataBean;
   }
}

レポート生成

次に、通常のANTビルドプロセスを使用して、上記のファイルをコンパイルして実行します。 ファイルbuild.xmlの内容(ディレクトリC:\ tools \ jasperreports-5.0.1 \ testに保存)は以下のとおりです。

インポートファイル-baseBuild.xmlは、チャプターリンク:/jasper_reports/jasper_environment_setup [Environment Setup]から取得され、build.xmlと同じディレクトリに配置する必要があります。

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml"/>

   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer to preview the
      report stored in the .JRprint file.">

      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint"/>
         <classpath refid = "classpath"/>
      </java>
   </target>

   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">

      <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath"/>
      </taskdef>

      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml"/>
            </fileset>
         </src>

         <classpath refid = "classpath"/>
      </jrc>
   </target>

</project>

次に、コマンドラインウィンドウを開き、build.xmlが配置されているディレクトリに移動します。 最後に、次のようにコマンド ant -Dmain-class = com.finddevguides.JasperReportFill (viewFullReportがデフォルトのターゲットです)を実行します-

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.finddevguides.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

clean-sample:
   [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint

compile:
   [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
   [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
   warning: 'includeantruntime' was not set, defaulting to bu
   [javac] Compiling 3 source files to C:\tools\jasperreports-5.0.1\test\classes

compilereportdesing:
   [jrc] Compiling 1 report design files.
   [jrc] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
   [jrc] log4j:WARN Please initialize the log4j system properly.
   [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faql#noconfig
      for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.finddevguides.JasperReportFill
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

viewFillReport:
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 19 minutes 45 seconds

上記のコンパイルの結果、以下の画面のようにJasperViewerウィンドウが開きます-

ジャスパー棒グラフの例

ジャスパー円グラフの例

ここでは、ページヘッダーに棒グラフが作成され、サマリーセクションに円グラフが作成されていることがわかります。