Jasper Reports 简明教程

Creating Charts

此前,人们不得不依赖脚本小类来收集图表数据,并使用报告模板中的图像元素来呈现图表。JasperReports 现在让此过程变得简单,因为它对使用新图表组件的图表内置有支持。

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

  1. The overall chart component.

  2. 图表数据集(对图表数据相关设置分组)。

  3. 图表绘图(对图表项目呈现方式相关的视觉设置分组)。

JasperReports 目前支持以下类型的图表:饼图、3D 饼图、条形图、3D 条形图、XY 条形图、堆积条形图、3D 堆积条形图、折线图、XY 折线图、面积图、XY 面积图、堆积面积图、散点图、气泡图、时间序列图、高开低收图、蜡烛图、多轴图表、仪表图、温度计和甘特图。

Chart Properties

图表是常规报表元素,因此它们与其它的报表元素共享一些属性。有一个名为 <*chart*> 的 JRXML 元素,用于创建所有类型的图表。此元素将适用于所有类型的图表特殊图表相关设置分组。

Chart Sub-Elements

<chart> 元素的子元素是:

  1. &lt;reportElement&gt; - 这些是可显示的对象,如静态文本、文本域、图像、线条和矩形,您可以将其放置在报表模板部分中。

  2. &lt;Box&gt; - 此元素用于用可在每侧进行自定义的边框包围图表。

  3. &lt;chartTitle&gt; - 此元素用于放置图表标题。position 属性决定了图表标题在报表中的位置。此元素具有下列属性: Position (值可以为顶部、底部、左侧、右侧。默认值为顶部), color 。<chartTitle> 以字体和 titleExpression 为子元素。

  4. &lt;chartSubtitle&gt; - 此元素用于放置图表子标题。此元素具有下列属性: color 。<chartSubtitle> 以字体和 subtitleExpression 为子元素。

  5. &lt;chartLegend&gt; - 此元素可以控制字体相关的属性以及使用此元素图表图例的文本颜色和背景颜色。此元素具有下列属性: textColorbackgroundColor

  6. &lt;anchorNameExpression&gt; - 此元素创建锚点的目标。

  7. &lt;hyperlinkReferenceExpression&gt; - 此元素包含指示外部资源(通常是 URL)名称的报表表达式。

  8. &lt;hyperlinkAnchorExpression&gt; - 超链接指向外部资源中的锚点。

  9. &lt;hyperlinkPageExpression&gt; - 超链接指向当前报表中的页面。

  10. &lt;hyperlinkTooltipExpression&gt; - 此元素控制超链接的工具提示。表达式的类型应为 java.lang.String。

  11. &lt;hyperlinkParameter&gt; - 此元素在存在时会根据参数值生成最终超链接。

Chart attributes

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

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

  2. evaluationTime - 确定在何时计算图表表达式。值可以为 Now、Report、Page、Column、Group、Band。默认值为 Now。

  3. evaluationGroup - 此属性确定用于计算图表表达式的组的名称。此属性的值必须与希望用作图表计算组的组的名称相匹配。

  4. hyperlinkType - 此属性可以保存任何文本值。默认值为 None。这意味着即使存在特殊的超链接表达式,文本域或图像也不会表示超链接。

  5. hyperlinkTarget - 此属性有助于在查看器中单击指定链接时自定义其行为。值可以为 Self 或 Blank。默认值为 Self。

  6. bookmarkLevel - 当将此属性设置为正整数时,将在导出到 PDF 的报表中生成书签。默认值为 0。

  7. customizerClass - 这是可用于自定义图表的一个类(可选)的名称。此元素的值必须是包含自定义器类名称的字符串。

Chart customization

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

Chart Datasets

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

JasperReports 中有几种图表数据集类型,因为每种类型的图表都与某些数据集一起使用:Pie、Category、XY、Time Series、Time Period、XYZ 和 High-Low。每种数据集类型都实现了定义图表数据集的 net.sf.jasperreports.engine.JRChartDataset 接口。所有图表数据集都以相同的方式初始化和递增;但是,它们仅在映射的数据或数据序列的类型上有所不同。

Dataset Properties

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

Attribute

Description

Values

resetType

此属性确定何时重置图表表达式的值。

无、报表、页、列、组。默认值为 Report

resetGroup

此属性确定重置图表表达式值时组的名称。

此属性的值必须与 JRXML 报表模板中声明的任何组的名称匹配。

incrementType

此属性确定何时重新计算图表表达式的值。

无、报表、页、列、组。默认值为 "None"

incrementGroup

此属性确定重新计算图表表达式时组的名称。

此属性的值必须与 JRXML 报表模板中声明的组的名称匹配。

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

Sub element

Description

<incrementWhenExpression>

可以通过使用此子元素筛选掉不需要的数据来自定义图表数据集的递增方式。

<datasetRun>

其中包含实例化报表子数据集所需的信息。

Dataset Types

特定的数据集类型说明如下 -

Pie Dataset

饼形图数据集的特征在于以下表达式 -

  1. <keyExpression> − 表示将组成饼状图中扇形的类别。此表达式可以返回任何 java.lang.Comparable 对象。

  2. <valueExpression> − 生成对应数据集中的每个类别/键的值。值始终是 java.lang.Number 对象。

  3. <labelExpression> − 如果此表达式缺失,该图表将为饼状图中的每个扇形显示默认标签。使用此表达式,它返回 java.lang.String 值,以自定义饼状图的项标签。

  4. <sectionHyperlink> − 设置与饼状图扇形关联的超链接。

Category Dataset

类别数据集的特征是 <categorySeries> 元素,其中包含 −

  1. <seriesExpression> − 指示系列的名称。此表达式可以返回任何 java.lang.Comparable 对象。

  2. <categoryExpression> − 返回系列表达式指定的系列内部每个值的类别的名称。类别是 java.lang.Comparable 对象。

  3. <valueExpression> − 生成对应数据集中的每个类别的值。值始终是 java.lang.Number 对象。

  4. <labelExpression> − 如果此表达式缺失,该图表将为图表中的每个项显示默认标签。使用此表达式,它返回 java.lang.String 值,以自定义图表中项标签。

  5. <itemHyperlink> − 设置与图表项关联的超链接。

XY Dataset

XY 数据集的特征是 <xySeries> 元素,其中包含 −

  1. <seriesExpression> − 指示系列的名称。此表达式可以返回任何 java.lang.Comparable 对象。

  2. <xValueExpression> − 返回表示 (x, y) 对中 X 值的 java.lang.Number 值,将该值添加到当前数据系列。

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

  4. <labelExpression> − 如果此表达式缺失,该图表将为图表中的每个项显示默认标签。使用此表达式,它返回 java.lang.String 值,以自定义图表中项标签。

  5. <itemHyperlink> − 设置与图表项关联的超链接。

XYZ Dataset

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

  1. <seriesExpression> − 指示系列的名称。此表达式可以返回任何 java.lang.Comparable 对象。

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

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

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

  5. <labelExpression> − 如果此表达式缺失,该图表将为图表中的每个项显示默认标签。使用此表达式,它返回 java.lang.String 值,以自定义图表中项标签。

  6. <itemHyperlink> − 设置与图表项关联的超链接。

Time Series Dataset

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

<timeSeries> 元素包含 −

  1. <seriesExpression> − 指示系列的名称。此表达式可以返回任何 java.lang.Comparable 对象。

  2. <timePeriodExpression> − 返回一个java.util.Date值,引擎将根据上面提到的timePeriod属性设置为相应的时间段提取该值。

  3. <valueExpression> − 在递增数据集的当前序列时,返回要与相应时间段值关联的java.lang.Number值。

  4. <labelExpression> − 如果此表达式缺失,该图表将为图表中的每个项显示默认标签。使用此表达式,它返回 java.lang.String 值,以自定义图表中项标签。

  5. <itemHyperlink> − 设置与图表项关联的超链接。

Time Period Dataset

时间段数据集由<timePeriodSeries>元素表征,其中包含 −

  1. <seriesExpression> − 指示系列的名称。此表达式可以返回任何 java.lang.Comparable 对象。

  2. <startDateExpression> − 指定与将数值添加到时间段序列时将与之关联的日期间隔的开始。

  3. <endDateExpression> − 指定与将数值添加到时间段序列时将与之关联的日期间隔的结束。

  4. <valueExpression> − 返回要与由开始日期和结束日期表达式指定的当前日期间隔关联的java.lang.Number值。

  5. <labelExpression> − 如果此表达式缺失,该图表将为图表中的每个项显示默认标签。使用此表达式,它返回 java.lang.String 值,以自定义图表中项标签。

  6. <itemHyperlink> − 设置与图表项关联的超链接。

High Low Dataset

高低数据集由以下表达式表征 −

  1. <seriesExpression> − 目前,高低或蜡烛图内仅支持一个序列。但是,此单个系列必须由该表达式返回的java.lang.Comparable值标识,并且还必须用作图表图例中的系列名称。

  2. <dateExpression> − 返回当前(高、低、开、收、量)项所指的日期。

  3. <highExpression> − 返回一个java.lang.Number值,该值将成为在数据集增量时添加到该系列的数据项的一部分。

  4. <lowExpression> − 返回一个java.lang.Number值,该值将成为在数据集增量时添加到该系列的数据项的一部分。

  5. <openExpression> − 返回一个java.lang.Number值,该值将成为在数据集增量时添加到该系列的数据项的一部分。

  6. <closeExpression> − 返回一个java.lang.Number值,该值将成为在数据集增量时添加到该系列的数据项的一部分。

  7. <volumeExpression> − 返回用于当前数据项的成交量的数字表达式。它仅用于蜡烛图。

  8. <itemHyperlink> − 设置与图表项关联的超链接。

Value Dataset

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

Chart Plots

另一个贯穿所有图表类型的常见JRXML元素是<*plot*>元素。这使我们可以定义图表的多项特征,如方向和背景颜色。根据图表类型,绘图有所不同。

Plot Attribute

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

Attribute

Description

Values

backcolor

此属性定义图表背景颜色。

任何六位十六进制值均为该属性的有效值。十六进制值前面必须加上一个 #。

orientation

此属性定义图表的方向。

水平,垂直 默认值是“垂直”

backgroundAlpha

此属性定义图表背景颜色的透明度。

此属性的有效值包括介于 0 和 1(含)之间的任何小数。数字越大,背景越不透明。默认值是“1”。

foregroundAlpha

此属性定义图表前景颜色的透明度。

此属性的有效值包括介于 0 和 1(含)之间的任何小数。数字越大,背景越不透明。默认值是“1”。

labelRotation

此属性允许旋转 x 轴上的文本标签,以顺时针或逆时针旋转。此属性仅适用于 x 轴不是数字或不显示日期的图表。

Default value is "0.0."

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

Specific Settings for Chart Plots

  1. piePlot − 没有具体设置

  2. pie3DPlot − 包含 depthFactor 属性,一个介于 0 到 1 之间表示饼图深度占绘图区域高度百分比的数字值。

  3. barPlot − 可以显示或隐藏刻度标签、刻度线或项目标签,并为两条轴提供设置。

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

  5. linePlot − 可以显示或隐藏连接项目点的线段,可以显示或隐藏与项目点关联的图形,并为两条轴提供设置。

  6. scatterPlot − 类似于 linePlot,它可以显示或隐藏连接项目点的线段,可以显示或隐藏与项目点关联的图形,并为两条轴提供设置。

  7. areaPlot − 为两条轴提供设置。

  8. bubblePlot − 可以通过设置 scaleType 属性设置气泡尺寸,并为两条轴提供设置。

  9. timeSeriesPlot − 可以显示或隐藏连接项目点的线段,可以显示或隐藏与项目点关联的图形,并为两条轴提供设置。

  10. highLowPlot − 可以显示或隐藏开盘刻度、可以显示或隐藏收盘刻度,并为两条轴提供设置。

  11. candlestickPlot − 可以显示或隐藏成交量,并为两条轴提供设置。

  12. meterPlot − 包含刻度形状、刻度角度、度量单位、刻度间隔、刻度颜色、指针颜色、刻度颜色、值显示字体、颜色和格式模式、数据范围和仪表间隔的具体设置。

  13. thermometerPlot − 包含值位置、水银颜色、显示/隐藏值行、值显示字体、颜色和格式模式、数据范围、低范围、中范围和高范围的具体设置。

  14. multiAxisChart − 包含绘图中包含的轴的具体设置。

Types of Charts

JasperReports 提供对多种图表类型的内置支持。它们如下所列 −

  1. pieChart − 饼数据集和饼图的组合。

  2. pie3DChart − 分组饼数据集和饼图 3D 图。

  3. barChart − 类别数据集和条形图的基本组合。

  4. bar3DChart − 封装类别数据集和条形图 3D 图。

  5. xyBarChart − 支持时间段数据集、时间序列数据集和 XY 数据集,并使用条形图呈现轴和项目。

  6. stackedBarChart − 使用类别数据集中的数据,并使用条形图呈现其内容。

  7. stackedBar3DChart − 使用类别数据集中的数据,并使用条形图 3D 图呈现其内容。

  8. lineChart − 分组类别数据集和折线图。

  9. xyLineChart − 分组 XY 数据集和折线图。

  10. areaChart − 使用面积图呈现类别数据集中的项目。

  11. stackedAreaChart − 使用面积图呈现类别数据集中的项目。

  12. xyAreaChart − 使用 XY 数据集中的数据,并通过面积图呈现。

  13. scatterChart − 用散点图封装 XY 数据集。

  14. bubbleChart − 将 XYZ 数据集与气泡图相结合。

  15. timeSeriesChart − 分组时间序列数据集和时间序列图。

  16. highLowChart - 高-低数据集和高-低图的组合。

  17. candlestickChart - 使用来自高-低数据集的数据,但使用特殊的蜡烛图。

  18. meterChart - 使用仪表图的渲染选项,在刻度盘上显示值数据集中的单个值。

  19. thermometerChart - 使用温度计图的渲染选项,显示值数据集中的单个值。

  20. multiAxisChart - 包含多个范围轴,所有这些轴共享一个公共域轴。

Example

为了演示图表,我们编写一个新的报表模板 (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>

以上文件的内容如下所述 −

  1. 用于创建条形图的 JRXML 元素是 <pageHeader> 中的 </barChart>。它包含一个 </chart> 子元素,其中包含一个定义图表尺寸和位置的 <reportElement> 子元素。

  2. 条形图中的 <dataset> 元素必须包含在 <categoryDataset> 和 </categoryDataset> JRXML 元素之间。

  3. <categoryDataset> 必须包含一个 <categorySeries> 元素。该元素定义条形图将表示的数据元素(在本例中为科目名称)。

  4. <categoryDataset> 还必须包含一个元素,该元素定义如何将数据划分为可比较的类别。在此,数据按科目名称划分。

  5. <valueExpression> 元素定义用于确定图表中每条条形图的值的表达式。在此,我们使用“分数”。

  6. 对于饼图,我们在 <summary> 部分下使用了元素 <pieChart>。它包含一个 </chart> 子元素。

  7. 子元素包含一个报表表达式,指示在图表中用作键的内容。在此,我们使用了 subjectName。

  8. 子元素包含一个用于计算键值的表达式。在此,我们使用了分数。

用于填充报告的 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;
   }
}

Report Generation

接下来,让我们使用我们的常规 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 窗口−

report bar chart example
report pie chart example

在此,我们看到条形图是在 pageheader 中创建的,饼图是在 summary 部分中创建的。