自己写的birt学习笔记,由于是根据英文教材学习的,可能在理解上会出现一些偏差,见谅……,如需要示例,可以联系我
BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 J2EE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。BIRT 也提供了图标引擎让你能为应用增加图表。
有了 BIRT,你可以为应用程序构建丰富的报表。
列表 - 列表是最简单的报表。当列表变长时,你可以把相关数据增加到同一分组(基于客户的订单分组,基于供应商的产品分组)。如果数据是数字类型的,你可以轻松的添加到“总数”、“平均”、或其他汇总中。
图表 - 当需要图表表现时,数字型数据比较好理解。BIRT 也提供饼状、线状以及柱状图标等。
交叉表 - 交叉表(也叫做十字表格或矩阵)用两种维度展示数据
信函和文档 - 通知、信件、以及其他文本文档都很容易通过 BIRT 方便建立。文档包括正文、格式、列表、图表等。
混合报表 - 很多报表需要联合以上所有的报表构成单一文档。例如,一份客户声明会列出客户所需要的信息,为当前促进(promotions)提供文本,以及提供并行的出帐和入帐列表。一份财政报表将包括声明、图表、表格,所有这些都将进行全方位的格式化,来匹配共有的配色方案。
我们可以基于eclipse进行birt的开发,在这里,我们在eclipse中集成了myeclipse7,由于myeclipse7已经集成了birt组件,所以我们只需要安装 myeclipse7插件即可。
数据源及报表所需要的数据的来源,报表展示的数据均来自数据源中。
BIRT目前支持多种数据源,具体包括数据库数据源 ,webservice数据源和xml数据源,和javascript数据源。目前最常见的数据源是数据库数据源。
具体报表中用到的数据集合叫做数据集,数据集是按照一定的条件从数据源中获取到的数据集合。数据集中的数据可以被排序、过滤、以及分组。
通过BIRT的开发平台,我们可以很方便快捷的设计出复杂、美观的报表。一个报表的信息存储在一个xml格式的报表文件中。
我们可以打开一个报表文件先看一下,在这里报表的文件看起来很复杂,所以,一般我们都是通过可视化开发工具进行报表文件的编辑。
当报表设计完成后,我们需要将其部署到相应的应用程序以供用户使用。BIRT提供了相应的运行时环境,可以将其整合到我们的web应用中,这样就可以运行报表了。
假设有这样一个报表设计开发要求:在mysql数据库中有一张与产品有关的数据表,其中包含产品分类名称、产品编号、产品名称、产品价格四个字段。
要求通过一张图表,按照产品的分类,罗列出各个分类下的产品详细信息。并统计每一分类下的产品数。
最后通过饼图将每个分类下的产品数量统计出来。
首先我们创建一个工程,将其命名为reportShow;然后向其增加开发报表的报表功能。
选择file-new –reportProject,选择j2ee5.0,并将工程名称命名为:reportShow。我们先来看一下整个工程的结构:这个工程和普通的java web工程结构是一样的。不同的是多出了报表所用的运行时环境,主要是report web lib,以及在web.xml中添加了相应的servlet配置。
下面我们将创建一个报表文件,将其命名为demoReport。
我们在reports文件夹下点击右键选择new -– report,输入报表名称:demoReport.rptdesign,选择空白报表一项;选择使用嵌入式标签进行展示;点击完成。这样就创建了一个报表文件。
现在我们来看一下,刚才的操作创建了两个文件,一个是/demoReport.jsp,用于演示报表jsp页面,另一个是:/reports/demoReport.rptdesign,使我们接下来需要编辑的报表文件。
打开demoReport.rptdesign文件,我们现在首先要做的是配置数据源,以获取数据
我们使用数据库类型的数据源作为当前报表的数据源,我们使用mysql数据库,数据库名称为birtDemo,在其中有一名为product的表,包括4列:id 、name、price,categoryName分别代表主键,产品名称,价格,所属分类名称。
接下来,我们配置下birt数据源。在data explore面板中选择dataSource,右键选择new dataSource ,选择数据库数据源。选择:com.mysql.jdbc.driver.这个是已经配置好的数据源。由于时间有限,数据库数据源参数的具体配置请参见myeclipse 数据源的配置方式,在这里不再演示。
点击测试,检测是否能够连接到数据库中。若测试通过,则数据库数据源创建成功。
接下来我们创建数据集product,这里的product数据集,将包括birtDemo数据库的product表中的所有数据.
在dataSet上,右键选择new Data Set,输入数据集名称“product”,所属的数据源选择默认数据源即可。点击下一步,输入数据集查询语句:select * from birtdemo.product
,点击完成。接下来我们可以预览一下刚创建的数据集,如果有不满意的地方还可以对其进行修改。
预览一下,确实查询到了所有的数据。完成数据集的创建操作。
我们首先将product数据集中的所有数据展示在一个表格中。
在 palette 面板中拖动一个table对象到右侧文件中,这样会在报表文件中添加一个列表对象。
选择列数。然后在data explore面板中,拖动product数据集的各个列到tabe中。切换到预览标签,我们可以看一下此时的展示效果:在table中列出了数据集的各个列的数据。
接下来,我们修改下列表的表头部分。分别改为:编号、名称、价格、分类。
下面,我们对报表进行按照分类进行分组操作。
首先我们调整一下各列的展示顺序,换成分类、编号、名称、价格。
然后在表格上按右键选择增加分组,选择分组列:categoryName。这样,就添加了一个分组到报表中。
接下来我们去掉多余的字段,并调整分组的样式【将分组改为对齐数据第一行并使其竖行剧中展示】。
下面我们对报表进行下美化。我们采取样式表的方式对列表进行美化。
先创建一个样式表文件:report.css,将其放置到css文件夹中。在其中添加上表格样式:
.tables{
text-align:center;
line-height:25px;
font-size:14px;
margin: 0;
border: 1px solid #99CCCC;
}
.table-header{
color:red;
}
我们在报表文件的out-line面板中导入这个文件:在Styles上按右键,选择Use Css File,选择我们刚才创建的文件,完成css文件的引入。
然后我们在报表的table上选择style—apply style 选择tables,这样就增加了样式到表格上了。我们可以预览一下效果。
我们接着给当前的报表增加一个图表,以饼图的形式,统计各个分类的产品数量。
我们先来定义一个数据集:叫做productStat,这里按照分类名称进行分组,取得分组名称以及分组中包含的数目。
select birtdemo.product.categoryName,
count(birtdemo.product.price)
from birtdemo.product
group by birtdemo.product.categoryName
接下来,我们在报表文件中拖入一个Chart组件,我们选择chart的类型为pie,即饼图。在数据选择标签中,我们选择使用数据集的方式,选中刚创建的数据集productSta。
将分类名称部分拖动到分类部分;将总数部分拖动到左侧作为饼图的值。保存后点击报表的预览看一下效果。这样,一个简单的饼图就添加到报表中了。
到目前为止,我们还只是在birt的开发环境中预览报表文件的效果,下面我们将在实际环境中运行报表看一下。
首先打开创建报表时自动生成的页面:demoReport.jsp
页面中使用了<birt:viewer>标签来访问我们刚才创建的报表,几个参数的意思很明显,分别指定了报表路径以及展示格式等。
最后,我们部署刚创建的应用,运行一下看一下实际效果。