创建图表



以前,人们不得不依赖脚本程序来收集图表数据,并使用报表模板中的图像元素来呈现图表。JasperReports 现在简化了这一过程,因为它使用新的图表组件内置支持图表。

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

  • 整体图表组件。

  • 图表数据集(它分组图表数据相关的设置)。

  • 图表绘图区(它分组与图表项目呈现方式相关的视觉设置)。

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

图表属性

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

图表子元素

<chart> 元素的子元素如下:

  • <reportElement> − 这些是可显示的对象,例如静态文本、文本字段、图像、线条和矩形,您可以将它们放在报表模板节中。

  • <Box> − 此元素用于用可在每一侧自定义的边框围绕图表。

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

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

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

  • <anchorNameExpression> − 此元素创建锚点的目标。

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

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

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

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

  • <hyperlinkParameter> − 此元素存在时,根据参数值生成最终超链接。

图表属性

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

  • isShowLegend − 此属性用于确定是否在报表上显示图表图例。值可以是 truefalse。默认值为 true

  • evaluationTime − 确定何时评估图表的表达式。值可以是 NowReportPageColumnGroupBand。默认值为 Now

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

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

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

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

  • customizerClass − 这是可用于自定义图表的类的名称(可选)。此元素的值必须是包含自定义程序类名称的字符串。

图表自定义

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

图表数据集

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

JasperReports 中提供了多种类型的图表数据集,因为每种类型的图表都使用某些数据集:饼图、分类、XY、时间序列、时间段、XYZ 和高低。这些数据集类型都实现了 net.sf.jasperreports.engine.JRChartDataset 接口,该接口定义图表数据集。所有图表数据集的初始化和递增方式相同;但是,它们仅在它们映射的数据类型或数据序列方面有所不同。

数据集属性

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

属性 描述
resetType 此属性确定何时重置图表表达式的值。 None、Report、Page、Column、Group。默认值为 Report
resetGroup 此属性确定重置图表表达式值的组的名称。 此属性的值必须与 JRXML 报表模板中声明的任何组的名称匹配。
incrementType 此属性确定何时重新计算图表表达式的值。 None、Report、Page、Column、Group。默认值为 "None"
incrementGroup 此属性确定重新计算图表表达式的组的名称。 此属性的值必须与 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 属性指定数据集中数据序列的类型。时间序列可以包含与日、月、年或其他预定义时间段关联的数值。可能的值为:Year、Quarter、Month、Week、Day - 这是默认值、Hour、Minute、Second、Millisecond。

<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> 元素的属性:

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

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

图表绘图的特定设置

  • 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 − 将饼图数据集和 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 元素是 </barChart>,位于 <pageHeader> 中。它包含一个 </chart> 子元素,该子元素包含一个 <reportElement> 子元素,用于定义图表的尺寸和位置。

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

  • <categoryDataset> 必须包含一个 <categorySeries> 元素。此元素定义条形将表示什么数据元素(在本例中为科目名称)。

  • <categoryDataset> 还必须包含一个元素,该元素定义如何将数据分成几类以进行比较。此处,数据按科目名称分开。

  • <valueExpression> 元素定义使用什么表达式来确定图表中每个条形的值。在这里,我们使用“marks”。

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

  • 子元素包含一个报表表达式,指示在图表中使用什么作为键。在这里,我们使用了 subjectName。

  • 子元素包含一个用于计算键值的表达式。在这里,我们使用了 marks。

报表填充的 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 https://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 Bar  Chart Example

Jasper Pie Chart Example

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

广告
© . All rights reserved.