### iReport-JasperReport 报表开发指南
#### 一、引言
iReport 是一个基于 Java 的开源项目,主要用于创建复杂报表。它利用了 JasperReports 引擎的强大功能,为开发者提供了一个可视化的设计界面,使得报表设计变得更加简单高效。本文档旨在详细介绍如何使用 iReport 来开发各种类型的报表,并涵盖了从基础概念到高级主题的所有知识点。
#### 二、入门指南
##### 2.1 环境要求
iReport 最新版本 2.0.1 需要以下运行环境:
- **Java SDK**: Sun Java 2 SDK 1.5 或以上版本。为了能够顺利编译报表文件,需要完整安装 JDK。
##### 2.3 下载与安装
iReport 的安装文件和源代码可以从官方网站获取:
- **官方网站**: [http://sourceforge.net/projects/ireport](http://sourceforge.net/projects/ireport)
当前最新的版本为 2.0.1,用户可以根据自己的需求选择合适的版本进行下载。下载后按照安装向导的提示完成安装过程。
#### 三、JasperReports 基础概念
##### 3.1 JasperReports 简介
JasperReports 是一个强大的报表引擎,支持多种数据源(如 JDBC、XML、CSV 等),并能够生成多种输出格式(如 PDF、HTML、Excel 和 CSV)。JasperReports 能够处理复杂的数据,包括分组、排序和过滤等功能。
##### 3.2 报表生命周期
报表的生命周期包括以下几个阶段:
1. **设计**: 使用 iReport 设计报表模板。
2. **填充**: 将数据填充到报表模板中。
3. **输出**: 将填充后的报表转换成所需的输出格式。
4. **查看**: 查看生成的报表。
#### 四、报表结构
##### 4.1 Bands
Bands 是报表布局中的基本单元,用于组织报表元素。主要的 bands 包括:
- **Title Band**: 通常放置报表标题。
- **Header Band**: 用来显示列标题或其他固定头部信息。
- **Detail Band**: 显示数据行,通常包含动态内容。
- **Footer Band**: 放置报表底部信息,如总计或版权信息。
- **Summary Band**: 在报表末尾显示汇总信息。
##### 4.2 报表元素
报表元素包括文本框、图片、线条、表格等,可以通过拖拽方式添加到 bands 中。
#### 五、字体和样式
##### 5.1 字体设置
iReport 允许自定义字体,可以通过导入 TTF 文件来使用外部字体。
##### 5.2 样式管理
样式是指一组预定义的格式设置选项,包括字体大小、颜色、对齐方式等。样式可以应用于多个报表元素上,以便保持一致性。
#### 六、字段、参数和变量
##### 6.1 字段
字段是从数据源获取的数据项,可以在报表中动态显示。例如,数据库查询结果中的列名。
##### 6.2 参数
参数是在报表执行过程中传递给报表的数据值。它们可以作为过滤条件或者计算公式的一部分。
##### 6.3 变量
变量用于存储报表级别的数据,例如累计值或统计信息。变量可以在报表的不同部分被引用和更新。
#### 七、分组与带区
##### 7.1 分组
分组功能允许根据特定字段对数据进行分类,从而实现更有效的数据展示。分组可以嵌套多层。
##### 7.2 带区
带区是报表中用于表示分组的区域,可以包含不同的细节信息。
#### 八、子报表
##### 8.1 创建子报表
子报表是一种特殊类型的报表,用于在主报表中嵌入另一个报表。这可以用于重复显示相同的数据格式,例如发票详情。
##### 8.2 传递参数
子报表可以接收来自主报表的参数,这些参数可以用来过滤子报表的数据。
##### 8.3 子报表示例
下面是一个简单的子报表使用示例:
1. **创建子报表**: 在 iReport 中新建一个报表作为子报表。
2. **定义参数**: 在子报表中定义接受参数。
3. **在主报表中嵌入**: 将子报表作为元素添加到主报表的适当位置。
4. **传递参数**: 设置参数值,并在主报表中调用子报表。
#### 九、数据源
##### 9.1 数据源介绍
数据源是报表获取数据的地方,iReport 支持多种类型的数据源:
- **JDBC 连接**: 通过 JDBC 访问数据库。
- **JavaBean 数据源**: 使用 JavaBean 对象作为数据源。
- **空数据源**: 当没有实际数据时使用。
- **HQL 和 Hibernate 连接**: 使用 Hibernate 查询语言 (HQL) 与 ORM 框架 Hibernate 结合使用。
##### 9.2 JDBC 连接
JDBC 连接是最常用的数据源之一,允许直接查询关系型数据库。配置 JDBC 连接需要指定数据库驱动、URL、用户名和密码。
##### 9.3 JRDataSource 接口
`JRDataSource` 是一个抽象接口,所有数据源都必须实现此接口。这使得 iReport 可以统一处理不同类型的数据源。
#### 十、国际化
##### 10.1 资源包基名
国际化支持允许报表适应不同语言和地区的需求。资源包基名是用于标识特定语言和地区的属性文件。
##### 10.2 获取本地化字符串
通过设置资源包基名,iReport 可以自动读取相应语言的属性文件中的字符串。
#### 十一、脚本
##### 11.1 JRAbstractScriptlet
脚本支持允许开发者在报表中执行复杂的逻辑操作。`JRAbstractScriptlet` 类提供了一种方便的方式来编写报表脚本。
#### 十二、模板
##### 12.1 模板结构
模板是一种预定义的报表布局,可以用来快速创建相似的报表。模板可以保存为 `.jrxml` 文件,并且可以复用。
##### 12.2 使用自定义模板
用户可以创建自己的模板,并将其应用于新的报表设计中。
##### 12.3 将模板放入 jar 文件
为了便于管理和发布,模板也可以被打包到 jar 文件中。
#### 十三、图表
##### 13.1 创建第一个图表
图表可以直观地展示数据,iReport 提供了多种图表类型,如柱状图、折线图、饼图等。
##### 13.2 数据集
数据集是图表所需的数据集合,通常由报表字段组成。
##### 13.3 图表属性
图表属性包括标题、图例、轴标签等,可以通过 iReport 的图形界面进行配置。
#### 十四、子数据集
##### 14.1 创建子数据集
子数据集是报表中的局部数据集合,通常用于创建图表或嵌入其他报表中。
##### 14.2 数据集运行
子数据集可以在报表的任何位置被引用,从而实现数据重用。
#### 十五、交叉表
##### 15.1 交叉表向导
交叉表是一种特殊的报表布局,用于展示行和列之间的数据关联。iReport 提供了一个向导来帮助创建交叉表。
##### 15.2 行、列和单元格
交叉表由行、列和单元格组成。每一行和每一列都可以有一个或多个层次,每个单元格可以包含一个或多个度量。
#### 十六、jrxml 文件介绍
jrxml 文件是 iReport 生成的 XML 格式的报表模板文件。它包含了报表的所有布局和逻辑信息。
本文档涵盖了 iReport-JasperReport 报表开发的基础和进阶知识,希望对读者有所帮助。通过学习本文档,开发者可以更加熟练地使用 iReport 工具来创建各种复杂报表。