创建图表


早期人们必须依靠 scriptlet 来收集图表数据并使用报告模板中的图像元素呈现图表。JasperReports 现在使事情变得简单,因为它使用新的图表组件内置了对图表的支持。

使用新的图表组件,用户只需应用视觉设置并定义有助于构建图表数据集的表达式。JasperReports 使用 JFreeChart 作为底层图表库。配置新图表组件时,涉及以下三个组件 -

  • 整体图表组件。

  • 图表数据集(对图表数据相关设置进行分组)。

  • 图表图(对与图表项呈现方式相关的视觉设置进行分组)。

JasperReports 目前支持以下类型的图表: Pie、Pie 3D、Bar、Bar 3D、XY Bar、Stacked Bar、Stacked Bar 3D、Line、XY Line、Area、XY Area、Stacked Area、Scatter、Bubble、Time Series、High -低-开-关、烛台、多轴、仪表、温度计和甘特图。

图表属性

图表是普通的报表元素,因此它们与所有其他报表元素共享一些属性。有一个名为 <chart> 的 JRXML 元素用于创建所有类型的图表。此元素对适用于所有类型图表的特殊图表特定设置进行分组。

图表子元素

<chart> 元素的子元素是 -

  • <reportElement> - 这些是可显示的对象,例如放置在报告模板部分中的静态文本、文本字段、图像、线条和矩形。

  • <Box> - 此元素用于通过每侧可自定义的边框包围图表。

  • <chartTitle> - 该元素用于放置图表的标题。位置属性决定图表的标题在报表中的位置。该元素具有属性 - Position(值可以是TopBottomLeftRight。默认值为Top)、color。<chartTitle> 将fonttitleExpression作为子元素。

  • <chartSubtitle> - 该元素用于放置图表的副标题。该元素具有属性 - color。<chartSubtitle> 将fontsubtitleExpression作为子元素。

  • <chartLegend> - 该元素可以使用该元素控制与字体相关的属性以及图表图例的文本颜色和背景颜色。该元素具有属性 - textColorbackgroundColor

  • <anchorNameExpression> - 该元素创建锚点的目标。

  • <hyperlinkReferenceExpression> - 该元素包含一个报告表达式,指示外部资源的名称(通常是 URL)。

  • <hyperlinkAnchorExpression> - 超链接指向外部资源中的锚点。

  • <hyperlinkPageExpression> - 超链接指向当前报告中的页面。

  • <hyperlinkTooltipExpression> - 该元素控制超链接的工具提示。表达式的类型应该是java.lang.String

  • <hyperlinkParameter> - 该元素存在时根据参数值生成最终的超链接。

图表属性

<chart> 元素中可用于所有图表类型的属性是 -

  • isShowLegend - 此属性用于确定图表图例是否显示在报告上。值可以是true,也可以是 false。默认值为true

  • 评估时间- 确定何时评估图表的表达式。值可以是“现在”“报告”“页面”“列”“组”、“带”。默认值为“现在”

  • evaluationGroup - 此属性确定用于评估图表表达式的组的名称。此属性的值必须与我们要用作图表评估组的组名称匹配。

  • hyperlinkType - 该属性可以保存任何文本值。默认值为None。这意味着,即使存在特殊的超链接表达式,文本字段和图像都不代表超链接。

  • hyperlinkTarget - 此属性有助于自定义在查看器中单击指定链接时的Behave。值可以是SelfBlank。默认值为Self

  • bookmarkLevel - 当设置为正整数时,此属性会在导出为 PDF 的报告中生成书签。默认值为0

  • customizerClass - 这是可用于自定义图表的类的名称(可选)。该元素的值必须是包含定制器类名称的字符串。

图表定制

如上所述,JasperReports 使用JFreeChart作为底层图表库。JFreeChart包含 JasperReports 直接不支持的功能。我们可以通过 <chart> 元素中的customizerClass属性提供定制器类来利用这些功能。定制器类什么也不是,只是net.sf.jasperreports.engine.JRChartCustomizer接口的实现。实现此接口的最简单方法是扩展net.sf.jasperreports.engine.JRAbstractChartCustomizer类,从而可以访问参数、字段和变量,以便根据报告数据进行更灵活的图表定制。

图表数据集

所有图表类型的共同属性之一是 <dataset>元素。图表数据集有助于在运行时映射报表数据和检索图表数据。每种图表类型都包含不同的子元素来定义图表的表达式。这些表达式定义用于生成图表的数据。所有这些子元素都包含一个 <dataset> 元素,该元素定义何时计算和重置图表的表达式。

JasperReports 中提供了多种类型的图表数据集,因为每种类型的图表都适用于特定的数据集:饼图、类别、XY、时间序列、时间段、XYZ 和高低值。这些数据集类型中的每一个都实现定义图表数据集的net.sf.jasperreports.engine.JRChartDataset接口。所有图表数据集都以相同的方式初始化和递增;然而,它们仅在映射的数据或数据系列的类型上有所不同。

数据集属性

下面给出的表总结了元素 <dataset> 的属性 -

属性 描述 价值观
重置类型 该属性确定何时重置图表表达式的值。 无、报表、页面、列、组。默认值为报告
重置组 此属性确定重置图表表达式值的组的名称。 此属性的值必须与 JRXML 报告模板中声明的任何组的名称匹配。
增量类型 该属性确定何时重新计算图表表达式的值。 无、报表、页面、列、组。默认值为“无”
增量组 此属性确定重新计算图表表达式的组的名称。 该属性的值必须与 JRXML 报告模板中声明的组名称匹配。

下表总结了元素 <dataset> 的子元素 -

子元素 描述
<增量表达式> 可以通过使用此子元素过滤掉不需要的数据来自定义图表数据集的递增方式。
<数据集运行> 这包含实例化报告子数据集所需的信息。

数据集类型

具体数据集类型解释如下 -

饼图数据集

饼图数据集的特征如下:

  • <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> - 返回 java.lang.Number 值,表示 (x, y) 对中将添加到当前数据系列的 X 值。

  • <yValueExpression> - 返回 java.lang.Number 值,表示 (x, y) 对中将添加到当前数据系列的 Y 值。

  • <labelExpression> - 如果缺少此表达式,图表将显示图表中每个项目的默认标签。使用此表达式(返回 java.lang.String 值)来自定义图表的项目标签。

  • <itemHyperlink> - 设置与图表项关联的超链接。

XYZ 数据集

XYZ 数据集的特征是 <xyzSeries> 元素,其中包含 -

  • <seriesExpression> - 表示系列的名称。该表达式可以返回任何 java.lang.Comparable 对象。

  • <xValueExpression> - 返回 java.lang.Number 值,表示将添加到当前数据系列的 (x, y, z) 项中的 X 值。

  • <yValueExpression> - 返回 java.lang.Number 值,表示将添加到当前数据系列的 (x, y, z) 项的 Y 值。

  • <zValueExpression> - 返回 java.lang.Number 值,表示将添加到当前数据系列的 (x, y, z) 项的 Z 值。

  • <labelExpression> - 如果缺少此表达式,图表将显示图表中每个项目的默认标签。使用此表达式(返回 java.lang.String 值)来自定义图表的项目标签。

  • <itemHyperlink> - 设置与图表项关联的超链接。

时间序列数据集

时间序列数据集的特征在于 timePeriod 属性和 <timeSeries> 元素。timePeriod 属性指定数据集中数据系列的类型。时间序列可以包含与日、月、年或其他预定义时间段关联的数值。可能的值为:年、季度、月、周、日 - 这是默认值、小时、分钟、秒、毫秒。

<timeSeries> 元素包含 -

  • <seriesExpression> - 表示系列的名称。该表达式可以返回任何 java.lang.Comparable 对象。

  • <timePeriodExpression> - 返回一个 java.util.Date 值,引擎将根据上述 timePeriod 属性设置的值从中提取相应的时间段。

  • <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> - 目前,高低点或烛台图表中仅支持一个系列。但是,这个单一系列必须由该表达式返回的 java.lang.Comparable 值来标识,并且它还必须用作图表图例中的系列名称。

  • <dateExpression> - 返回当前(最高价、最低价、开盘价、收盘价、交易量)项所指的日期。

  • <highExpression> - 返回一个 java.lang.Number 值,当数据集递增时,该值将成为添加到系列中的数据项的一部分。

  • <lowExpression> - 返回一个 java.lang.Number 值,当数据集递增时,该值将成为添加到系列中的数据项的一部分。

  • <openExpression> - 返回一个 java.lang.Number 值,当数据集递增时,该值将成为添加到系列中的数据项的一部分。

  • <closeExpression> - 返回一个 java.lang.Number 值,当数据集递增时,该值将成为添加到系列中的数据项的一部分。

  • <volumeExpression> - 返回用于当前数据项的体积值的数值表达式。它仅用于蜡烛图。

  • <itemHyperlink> - 设置与图表项关联的超链接。

价值数据集

这是一个特殊的图表数据集实现,包含单个值,用于渲染仪表和温度计图表。该值是使用 <valueExpression> 表达式收集的。

图表图

所有图表类型中另一个常见的 JRXML 元素是 <plot>元素。这使我们能够定义图表的几个特征,例如方向和背景颜色。根据图表类型的不同,图也有所不同。

绘图属性

下表总结了 <plot> 元素的属性 -

属性 描述 价值观
背景色 该属性定义图表的背景颜色。 任何六位十六进制值都是该属性的有效值。十六进制值前面必须带有#。
方向 该属性定义图表的方向。 水平、垂直 默认值为“垂直”
背景阿尔法 该属性定义图表背景颜色的透明度。 此属性的有效值包括 0 到 1 之间的任何十进制数(含 0 和 1)。数字越高,背景的透明度越低。默认值为“1”。
前景阿尔法 该属性定义图表前景色的透明度。 此属性的有效值包括 0 到 1 之间的任何十进制数(含 0 和 1)。数字越高,背景的透明度越低。默认值为“1”。
标签旋转 该属性允许文本标签在 x 轴上顺时针或逆时针旋转。此属性仅适用于 x 轴不是数字或不显示日期的图表。 默认值为“0.0”。

<plot> 元素有一个子元素 <seriesColor> ,其属性为:seriesOrdercolor。此元素自定义系列的颜色及其在颜色序列中的位置。

图表图的具体设置

  • piePlot - 它没有特定的设置

  • ie3DPlot - 包含深度因子属性,一个范围从 0 到 1 的数值,表示饼图深度占绘图区域高度的百分比。

  • barPlot - 可以显示或隐藏刻度标签、刻度线或项目标签,并提供两个轴的设置。

  • bar3DPlot - 提供与 barPlot 相同的设置,并使用 xOffset 和 yOffset 属性生成 3D 效果。

  • linePlot - 可以显示或隐藏连接项目点的线,可以显示或隐藏与项目点关联的形状,并提供两个轴的设置。

  • scatterPlot - 与 linePlot 类似,它可以显示或隐藏连接项目点的线,可以显示或隐藏与项目点关联的形状,并提供两个轴的设置。

  • areaPlot - 提供两个轴的设置。

  • bubblePlot - 可以通过设置scaleType属性来设置气泡尺寸,并提供两个轴的设置。

  • timeSeriesPlot - 可以显示或隐藏连接项目点的线,可以显示或隐藏与项目点关联的形状,并提供两个轴的设置。

  • highLowPlot - 可以显示或隐藏打开的刻度线,可以显示或隐藏关闭的刻度线,并提供两个轴的设置。

  • CandlestickPlot - 可以显示或隐藏交易量,并提供两个轴的设置。

  • meterPlot - 包含表盘形状、刻度角度、测量单位、刻度间隔、刻度盘颜色、指针颜色、刻度颜色、值显示字体、颜色和格式模式、数据范围和仪表间隔的特定设置。

  • ThermometerPlot - 包含值位置、水银颜色、显示/隐藏值线、值显示字体、颜色和格式模式、数据范围、低范围、中范围和高范围的特定设置。

  • multiAxisChart - 包含绘图中包含的轴的特定设置。

图表类型

JasperReports 为多种图表类型提供内置支持。它们列出如下 -

  • pieChart - 饼图数据集和饼图的组合。

  • pie3DChart - 将饼图数据集和饼图 3D 图分组。

  • 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 取自“环境设置”一章,并且应放置在与 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 窗口将打开,如下面的屏幕所示 -

Jasper 条形图示例

Jasper 饼图示例

在这里,我们看到条形图是在页眉中创建的,饼图是在摘要部分中创建的。