Jasper Reports 简明教程
JasperReports - Environment Setup
JasperReports 是一个纯粹的 Java 库,而不是一个独立的应用程序。它无法自己运行,因此需要将其嵌入另一个客户端或服务器端 Java 应用程序中。由于它基于 Java,因此可以在支持 Java(JDK 1.3 及更高版本)的任何平台上运行。所有 JasperReports 的功能都汇集在单个 JAR 文件 jasperreports-x.x.x.jar 中。此 JAR 文件以及必需和可选库(.ZIP 文件)可以从以下网站下载: JasperReport Library Link 。从该链接下载最新版本。
ZIP 文件包括 JasperReports JAR 文件,以及 JasperReports 源代码、依赖的 JAR 文件和大量用于演示 JasperReport 功能的示例。
JasperReport Environment
为开始创建报告,我们需要设置好环境。将下载的 JasperReport.ZIP 文件解压到任意位置(我们情况下,已将它解压到 C:\tools\jasperreports-5.0.1)。下面是解压的文件的目录结构:
这里是对所有目录的详细说明:
-
构建 - 包含已编译的 JasperReport 类文件。
-
演示 - 包含各种示例,演示了 JasperReports 功能的多方面。
-
dist - 包含 jasperreports-x.x.x.jar 文件。我们将此 JAR 文件添加到我们的 CLASSPATH 来利用 JasperReports。
-
文档 - 包含 JasperReports 文档的本地副本。
-
lib - 包含生成 JasperReports 和在我们的应用程序中使用它时所需要的所有 JAR。
-
src - 包含 JasperReports 源代码。
-
build.xml - 用来构建 JasperReports 源代码的 ANT 构建文件。如果我们不打算修改 JasperReports,则无需使用此文件,因为 JasperReports 以编译的形式进行分发。
-
changes.txt - 文本文档,说明了当前 JasperReports 类库版本和先前版本之间的区别。
-
license.txt - 文本文档,包含 LGPL(宽松通用公共许可证)许可证的全文。
-
readme.txt - 文本文档,包含有关如何构建和执行提供的示例的说明。
基本上,我们仅将 dist 下的 jasperreports-x.x.x.jar 和 lib 目录下的 JAR 用来生成报表。由于 JasperReports 是一个开源工具,如果在 jasperreports-x.x.x.jar 的执行过程中识别到任何缺陷或 bug,我们可以使用 build.xml 文件修复它并再次构建 JAR。
Set the CLASSPATH
为使用 JasperReport,我们需将下列文件设置到我们的 CLASSPATH:
-
jasperreports-x.x.x.jar,其中 x.x.x 是 JasperReports 版本。它位于目录 C:\tools\jasperreports-x.x.x\dist 下。
-
lib 子目录下的所有 JAR 文件(C:\tools\jasperreports-x.x.x\lib)。
在安装时,我们使用了 JasperReport 5.0.1 版本。右键单击“我的电脑”,选择“属性”,单击“高级”标签下的“环境变量”按钮。现在使用 C:\tools\jasperreports-5.0.1\dist\jasperreports-5.0.1.jar:C:\tools\jasperreports-5.0.1\lib 更新“路径”变量。现在您已准备好创建您的报表。
在本教程的所有示例中,我们都使用 ANT 任务来生成报表。 build 文件负责导入生成报表所需的所有 JAR。因此,正如前面提到的那样,设置 CLASSPATH 仅将帮助那些希望在不使用 ANT 的情况下生成报表的人。
Build Setup
本教程中的所有示例 −
-
都已使用简单的文本编辑器编写。
-
都已保存在目录 C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint 中。
-
已使用 Apache ANT 从命令提示符编译和执行。我们将在后续章节中导入 ANT build.xml 文件中的 baseBuild.xml 文件。将这个文件保存到 C:\tools\jasperreports-5.0.1\test。以下是 baseBuild.xml 文件的内容 −
<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportExample" basedir = ".">
<description>Previews our JasperReport XML Design</description>
<property name = "file.name" value = "jasper_report_template" />
<!-- Directory where the JasperReports project file was extracted
needs to be changed to match the local environment -->
<property name = "jasper.dir" value = "../" />
<property name = "dist.dir" value = "${jasper.dir}/dist" />
<property name = "lib.dir" value = "${jasper.dir}/lib" />
<property name = "src.dir" value = "src" />
<property name = "classes.dir" value = "classes" />
<property name = "main-class" value = "com.tutorialspoint.HelpMe" />
<path id = "classpath">
<pathelement location = "./" />
<pathelement location = "${classes.dir}" />
<fileset dir = "${lib.dir}">
<include name = "**/*.jar" />
</fileset>
<fileset dir = "${dist.dir}">
<include name = "**/*.jar" />
</fileset>
</path>
<target name = "compile" depends = "clean-sample">
<mkdir dir = "${classes.dir}"/>
<javac srcdir = "${src.dir}" destdir = "${classes.dir}"
classpathref = "classpath" />
</target>
<target name = "run" depends = "compile">
<echo message = "Running class : ${main-class}"/>
<java fork = "true" classname = "${main-class}">
<classpath>
<path refid = "classpath" />
</classpath>
</java>
</target>
<target name = "clean-sample">
<delete dir = "${classes.dir}" />
<delete file = "./${file.name}.jasper" />
<delete file = "./${file.name}.jrprint" />
</target>
</project>
此文件包含所有必需的目标,例如清理目录、编译 java 文件以及执行类文件。
以下是对 baseBuild.xml 中提到的各种目录的详细信息。假设当前目录是 C:\tools\jasperreports-5.0.1\test) −
-
jasper.dir − 是 C:\tools\jasperreports-5.0.1 目录
-
lib.dir − 是 C:\tools\jasperreports-5.0.1\lib 目录
-
src.dir − is C:\tools\jasperreports-5.0.1\test\src
-
classes.dir − is C:\tools\jasperreports-5.0.1\test\classes
-
main-class − com.tutorialspoint.HelpMe。当未从命令行传递类文件名时,此类一个要执行的简单类。将此文件保存到 C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint。
package com.tutorialspoint;
public class HelpMe {
public static void main(String[] args) {
System.out.println("This is the default class executed."
+ "Please pass the fully qualified class" + " name to be executed as command line"
+ " parameter, for example," + " com.tutorialspoint.HelpMe ");
}
}
Jasper Managers Classes
有多个类可用于编译 JRXML 报告设计、填充报告、打印报告、导出到 PDF、HTML 和 XML 文件、查看生成的报告以及报告设计。
这些类的列表 −
-
net.sf.jasperreports.engine.JasperCompileManager − 用于编译 JRXML 报告模板。
-
net.sf.jasperreports.engine.JasperFillManager − 用于使用来自数据源的数据填充报告。
-
net.sf.jasperreports.engine.JasperPrintManager − 用于打印由 JasperReports 库生成的文档。
-
net.sf.jasperreports.engine.JasperExportManager − 用于获取报告填充过程生成的文件的 PDF、HTML 或 XML 内容。
-
net.sf.jasperreports.view.JasperViewer − 它表示能够加载和显示报告的简单 Java Swing 应用程序。
-
net.sf.jasperreports.view.JasperDesignViewer − 在设计时用于预览报告模板。
Setting up Apache ANT
我们将使用 Apache ANT 构建所有示例。因此,请检查 ANT - Environment Setup 章节在您的系统上设置 Apache ANT。