JasperReports 是什么
JasperReports是一个面向开发人员设计的开源Java类库, 通过它可以为Java应用程序增加报表功能。由于 JasperReports 不是独立的工具,所以不能对它进行独立安装。而是要通过应用程序的 CLASSPATH 来包含其类库,从而把它嵌入到 Java应用程序中。JasperReports 是一个 Java类库,也就是说它不是为最终用户准备的。它的目标用户是那些需要为应用程序添加报表功能的Java
开发人员。
JasperReports采用 Lesser GNU Public Library (LGPL)许可协议,所以开放源代码的或不开放源代码的应用程序都可以使用它。通过链接来使用JasperReports 类库的应用程序不需要开放源代码,而需要对现有JasperReports 源代码进行修改的,那么所修改的内容必须也遵循 LGPL 进行发布。更详细的说明可参考 http://www.gnu.org/copyleft/lesser.html。尽管 JasperReports 主要用于通过 Servlet API 来为基于 Web 的应用程序增加报表功能,但它并不是完全依赖于 Servlet API或任何 Java EE类库。因此,它并不仅限于 Web 应用程序。用 JasperReports 来建立独立的桌面程序或命令行程序来生成报表的开发从未停止过。可是,话说又回来,JasperReports除了是一个 Java类库之外,什么都不是。它做的事情只是通过提供 API来为各种Java应用程序增加生成报表的功能。
JasperReports需要 Java Development Kit (JDK) 1.4或更新的版本来进行编译,以便和 JasperReports 的 Java 类库一同工作。同时还需要 Java Runtime Environment (JRE) 1.3或更新的版本来运行这些应用程序。早期版本的 JasperReports 需要 JDK 来运行 JasperReports 应用程序 (严格地讲,JasperReports 需要 tools.jar 被设置在 CLASSPATH 环境变量中,JDK包含了 tools.jar,而 JRE 中没有)。然而,从 0.6.4 版以后,JasperReports把 Eclipse Java Development Tools (JDT)编译器捆绑在一起,因此不再需
要 JDK 来运行部署后的应用程序。本书的例子是用 JDK1.6 开发的,但它们在JasperReports支持的任何其它 JDK 或 JRE上也应该能够顺利地编译和运行。
JasperReports 的特点
JasperReports 除了以文本数据方式生成报表外,还可以生成包含图片、图表和图形的专业报表。JasperReports的主要特点包括:
• 灵活的报表排版
• 多样的数据表现方式
• 多样的数据提供方式
• 支持从多种数据源接收数据
• 能够生成水印
• 能够生成子报表
此外,它还可以用许多种格式来输出报表。下面的各小节将对这些特点做简要介绍。
类库依赖
JasperReports借用了其它的开源Java类库来实现其部分功能,其中包括:
iText: 一个用于生成和处理 PDF的类库。另外,它还可以生成和处理 RTF、XML和 HTML文档。JasperReports用它来导出 PDF和 RTF 格式的报表。要获得有关 iText 的详细介绍,可以访问 http://www.lowagie.com/iText/。
JFreeChart: 一个 Java类库,可用于生成各种图表,包括:饼图、条形图、线形图、区域图、等等。JasperReports通过 JFreeChart 来实现其图表功能。有关 JFreeChart 的详细介绍可以查阅http://www.jfree.org/jfreechart/。
Apache POI: 一个Java类库, 用于创建和处理各种建立在Microsoft的OLE2混合文档格式基础上的Microsoft Office格式的文档。 JasperReports通过POI来导出XLS 格式的报表,更多的 Jakarta POI有关介绍可查阅http://poi.apache.org/。
JAXP: 用于解析和转换XML文档的 Java API,JasperReports用它来解析XML文件。JAXP 包含在 Java SE 5.0中。如果使用更早版本的Java SE,也可以要独立地下载它。有关 JAXP的详细介绍可以查阅https://jaxp.dev.java.net/。
Apache Commons: 一套 Java类库,提供了大量的可重用组件。JasperReports使用了其中的 Commons Digester、BeanUtils、Logging组件来辅助JAXP 解析XML。关于 Apache Commons的详细介绍可查阅http://commons.apache.org/。
典型的开发流程
下面的图形给出了用 JasperReports创建报表的典型开发流程:
用 JasperReports进行开发时,第一步要创建报表模板,它是一个 XML文件。它可以通过手工编码来完成,也可以用图形化的报表设计软件完成。虽然JasperReports的报表模板是 XML文件,但其文件名却用.jrxml 来作为扩展名。JasperReports XML模板通常就是指 JRXML文件,本书中也使用这一术语。