チャートの作成

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

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

  • 全体的なチャートコンポーネント。

  • グラフデータセット(グラフデータ関連の設定をグループ化します)。

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

JasperReportsは現在、次のタイプのグラフをサポートしています:円、円3D、棒、棒3D、XY棒、積み上げ棒、積み上げ棒3D、線、XY線、面積、XY面積、積み上げ面積、散布図、バブル、時系列、高-Low-Open-Close、ローソク足、多軸、メーター、温度計、およびガント。

チャートのプロパティ

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

チャートのサブ要素

<chart>要素のサブ要素は次のとおりです。

  • <reportElement> −これらは、レポートテンプレートセクションに配置する静的テキスト、テキストフィールド、画像、線、長方形などの表示可能なオブジェクトです。

  • <Box> −この要素は、両側でカスタマイズ可能な境界線でグラフを囲むために使用されます。

  • <chartTitle>−この要素は、チャートのタイトルを配置するために使用されます。位置属性は、レポートのグラフのタイトル位置を決定します。この要素には属性があります-Position(値はTopBottomLeftRightの場合があります。Deafult値はTopです)、color。<chartTitle>には、サブ要素としてfonttitleExpressionがあります。

  • <chartSubtitle>−この要素は、チャートのサブタイトルを配置するために使用されます。この要素には属性があります-color。<chartSubtitle>には、サブ要素としてfontsubtitleExpressionがあります。

  • <chartLegend>−この要素は、この要素を使用して、フォント関連のプロパティ、およびグラフの凡例のテキストの色と背景色を制御できます。この要素には属性があります-textColor そして backgroundColor

  • <anchorNameExpression> −この要素は、アンカーのターゲットを作成します。

  • <hyperlinkReferenceExpression> −この要素には、外部リソース(通常はURL)の名前を示すレポート式が含まれます。

  • <hyperlinkAnchorExpression> −ハイパーリンクは外部リソースのアンカーを指します。

  • <hyperlinkPageExpression> −ハイパーリンクは現在のレポートのページを指します。

  • <hyperlinkTooltipExpression>−この要素は、ハイパーリンクのツールチップを制御します。式のタイプはjava.lang.Stringである必要があります

  • <hyperlinkParameter> −この要素が存在する場合、パラメーター値に応じて最終的なハイパーリンクが生成されます。

チャート属性

すべてのチャートタイプで使用できる<chart>要素の属性は次のとおりです。

  • isShowLegend−この属性は、チャートの凡例をレポートに表示するかどうかを決定するために使用されます。値はtrueまたはfalseの場合があります。デフォルト値はtrueです。

  • evaluationTime−チャートの式がいつ評価されるかを決定します。値は、NowReportPageColumnGroupBandのようになります。デフォルト値は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> −の属性をまとめたものです。

属性 説明
resetType この属性は、チャート式の値をいつリセットするかを決定します。 なし、レポート、ページ、列、グループ。デフォルト値はReport
resetGroup この属性は、チャート式の値がリセットされるグループの名前を決定します。 この属性の値は、JRXMLレポートテンプレートで宣言されているグループの名前と一致する必要があります。
増分タイプ この属性は、チャート式の値をいつ再計算するかを決定します。 なし、レポート、ページ、列、グループ。デフォルト値は"None"
増分グループ この属性は、チャート式が再計算されるグループの名前を決定します。 この属性の値は、JRXMLレポートテンプレートで宣言されているグループの名前と一致する必要があります。

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

サブ要素 説明
<incrementWhenExpression> グラフデータセットの増分方法は、このサブ要素を使用して不要なデータを除外することでカスタマイズできます。
<datasetRun> これには、レポートサブデータセットをインスタンス化するために必要な情報が含まれています。

データセットタイプ

特定のデータセットタイプを以下に説明します-

パイデータセット

円グラフのデータセットは、次の式で特徴付けられます-

  • <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>要素の属性をまとめたものです。

属性 説明
背景色 この属性は、チャートの背景色を定義します。 6桁の16進値は、この属性の有効な値です。16進値の前には#を付ける必要があります。
オリエンテーション この属性は、チャートの方向を定義します。 水平、垂直デフォルト値は「垂直」です
backgroundAlpha この属性は、チャートの背景色の透明度を定義します。 この属性の有効な値には、0から1までの任意の10進数が含まれます。数値が大きいほど、背景の透明度が低くなります。デフォルト値は「1」です。
foregroundAlpha この属性は、チャートの前景色の透明度を定義します。 この属性の有効な値には、0から1までの任意の10進数が含まれます。数値が大きいほど、背景の透明度が低くなります。デフォルト値は「1」です。
labelRotation この属性を使用すると、x軸上のテキストラベルを時計回りまたは反時計回りに回転できます。この属性は、x軸が数値でないか、日付を表示しないグラフにのみ適用されます。 デフォルト値は「0.0」です。

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

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

  • piePlot −特定の設定はありません

  • pie3DPlot−作図領域の高さのパーセンテージとして円の深さを表す、0から1の範囲の数値であるdepthFactor属性が含まれます。

  • barPlot −目盛りラベル、目盛り、またはアイテムラベルを表示または非表示にでき、両方の軸の設定を提供します。

  • bar3DPlot − barPlotと同じ設定を提供し、xOffset属性とyOffset属性を使用して3D効果を生成します。

  • linePlot −アイテムポイントを結ぶ線を表示または非表示にしたり、アイテムポイントに関連付けられた形状を表示または非表示にしたり、両方の軸の設定を提供したりできます。

  • scatterPlot − linePlotと同様に、アイテムポイントを結ぶ線を表示または非表示にしたり、アイテムポイントに関連付けられた形状を表示または非表示にしたり、両方の軸の設定を提供したりできます。

  • areaPlot −両方の軸の設定を提供します。

  • bubblePlot − scaleType属性を設定することでバブルの寸法を設定でき、両方の軸の設定を提供します。

  • timeSeriesPlot −アイテムポイントを結ぶ線を表示または非表示にしたり、アイテムポイントに関連付けられた形状を表示または非表示にしたり、両方の軸の設定を提供したりできます。

  • highLowPlot −開いているティックを表示または非表示にしたり、閉じたティックを表示または非表示にしたり、両方の軸の設定を提供したりできます。

  • candlestickPlot −ボリュームを表示または非表示にすることができ、両方の軸の設定を提供します。

  • meterPlot −文字盤の形状、目盛りの角度、測定単位、目盛り間隔、文字盤の色、針の色、目盛りの色、値表示フォント、色とフォーマットのパターン、データ範囲、メーター間隔の特定の設定が含まれています。

  • thermometerPlot −値の場所、水銀の色、値の行の表示/非表示、値の表示フォント、色とフォーマットのパターン、データ範囲、低範囲、中範囲、および高範囲の特定の設定が含まれています。

  • multiAxisChart −プロットに含まれる軸の特定の設定が含まれています。

チャートの種類

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

  • pieChart −PieデータセットとPieプロットの組み合わせ。

  • pie3DChart −PieデータセットとPie3Dプロットをグループ化します。

  • barChart −カテゴリデータセットと棒グラフの基本的な組み合わせ。

  • bar3DChart −カテゴリデータセットとバー3Dプロットをラップします。

  • xyBarChart −期間データセット、時系列データセット、およびXYデータセットをサポートし、棒グラフを使用して軸とアイテムをレンダリングします。

  • stackedBarChart −カテゴリデータセットのデータを使用し、棒グラフを使用してそのコンテンツをレンダリングします。

  • stackedBar3DChart −カテゴリデータセットのデータを使用し、バー3Dプロットを使用してそのコンテンツをレンダリングします。

  • lineChart −カテゴリデータセットと折れ線グラフをグループ化します。

  • xyLineChart −XYデータセットと折れ線グラフをグループ化します。

  • areaChart −カテゴリデータセットのアイテムは、エリアプロットを使用してレンダリングされます。

  • stackedAreaChart −カテゴリデータセットのアイテムは、エリアプロットを使用してレンダリングされます。

  • xyAreaChart − XYデータセットからのデータを使用し、エリアプロットを介してレンダリングします。

  • scatterChart −XYデータセットを散布図でラップします。

  • bubbleChart −XYZデータセットをバブルプロットと組み合わせます。

  • timeSeriesChart −時系列データセットと時系列プロットをグループ化します。

  • highLowChart −高低データセットと高低プロットの組み合わせ。

  • candlestickChart −高低データセットからのデータを使用しますが、特別なローソク足プロットを使用します。

  • meterChart −メータープロットのレンダリングオプションを使用して、値データセットの単一の値をダイヤルに表示します。

  • thermometerChart −温度計プロットのレンダリングオプションを使用して、値データセット内の単一の値を表示します。

  • 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>です。</ chart>サブ要素が含まれ、チャートの寸法と位置を定義する<reportElement>サブ要素が含まれます。

  • 棒グラフの<dataset>要素は、<categoryDataset>要素と</ categoryDataset> JRXML要素で囲む必要があります。

  • <categoryDataset>には、<categorySeries>要素が含まれている必要があります。この要素は、バーが表すデータ要素(この例ではサブジェクト名)を定義します。

  • <categoryDataset>には、比較のためにデータをカテゴリに分類する方法を定義する要素も含める必要があります。ここでは、データはサブジェクト名で区切られています。

  • <valueExpression>要素は、グラフの各バーの値を決定するために使用される式を定義します。ここでは「マーク」を使用しています。

  • 円グラフでは、<summary>セクションの下にある要素<pieChart>を使用しました。</ chart>サブ要素が含まれています。

  • サブ要素には、チャートのキーとして何を使用するかを示すレポート式が含まれています。ここでは、subjectNameを使用しました。

  • サブ要素には、キーの値を計算するために使用される式が含まれています。ここでは、マークを使用しています。

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

package com.tutorialspoint;

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\tutorialspoint\DataBean.java 内容は以下の通りです−

package com.tutorialspoint;

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\tutorialspoint\DataBeanList.java 以下のように更新する必要があります-

package com.tutorialspoint;

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は、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.tutorialspoint.JasperReportFill (viewFullReportがデフォルトのターゲットです)次のように-

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.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/faq.html#noconfig 
      for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.tutorialspoint.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ウィンドウが次の画面のように開きます-

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