BIRT:基于 Eclipse 的报表
胡键 , 西安交通大学硕士 2006 年 3 月 22 日
安装介绍 对于扩展Eclipse的功能,首先当然就是去下载对应的plugin,BIRT也不能例外。BIRT的下载地址:http://download.eclipse.org/birt/downloads/,当前版本是2.0。BIRT依赖于Eclipse的其它几个plugin(GEF和EMF),由于我使用的是Eclipse WTP(这是Eclipse的WEB开发工具),在这个工具中那些plugin都已预装,因此直接下载birt-report-framework- 2_0_0.zip就好了。如果没有这些plugin,请下载。 下载之后,安装非常简单:只需解压然后将对应的features和plugins目录中的内容复制到Eclipse对应的目录下即可。且慢,这只是完成了对于BIRT的基本安装。下一步就是去下载BIRT需要的第三方软件包:
自此,BIRT的安装大功告成。启动Eclipse,在"project wizard"中会出现一个BIRT的项目类型。
典型使用 在使用之前,了解一些关于BIRT的基本概念,将会对使用非常有益:
本文中的例子都采用jdbc数据源,这是最常见的使用情形,其中涉及的数据关系是一个典型的多对多关系: 1. 简单报表 首先,让我们来看看一个"Hello World"级别的应用:"列出所有用户",以便可以快速的了解BIRT。为了完成这一任务,我们需要: A. 通过项目向导,创建BIRT工程。工程创建完毕之后,显示BIRT的"报表设计"视图。由于此时没有报表,其它几个视图,如"数据资源管理器",不可用。 B. 在项目上点鼠标右键,选择:"new -> 报表"。在报表类型中,选择"空白报表"。 C. 创建新报表后,数据视图可用。在"数据资源管理器"中创建报表所需要的jdbc数据源。根据向导,可以方便的添加jdbc驱动、数据库url、用户名和密码。 D. 在指定的数据源上,创建数据集,这一步完成产生数据集的查询。在BIRT中支持2种数据集:基于查询语句和基于存储过程。在本例中使用前者,对应的查询语句是: E. 选择刚刚创建的数据集,将它拖至空白报表页上。BIRT会自动为其创建一个报表项,此处是"表"。如下图: F. 选择预览,就可以看到报表运行的实际结果了。或在报表上点击鼠标右键,选择:"报表 -> 运行报表"。 非常简单,一个显示所有用户信息的报表就完成了。在此基础之上,让我们再来完成一些其它具有挑战性的任务: 1.格式化:这是一个内容广泛的主题,常见的需求:
2.排序:一种变通的做法是:将数据集排序之后,如在对应的SQL语句中使用order by,再显示。除此之外,也可以在报表设计时来完成: A. 选择表,此时属性编辑器下方会出现与表相关的选择页。 B. 选择"排序",在对应的页面中选择"添加"按钮之后,出现: C. 选择需要进行排序的列,以及排序方式。 3.计算列:通过"数据集编辑器"来完成。进入"数据集编辑器后",选择"计算列":输入对应的"列名称"、"数据类型"和"表达式"。 4.报表参数:它为报表的产生带来了极大的灵活性。报表参数一定是与含参数的查询对应的,否则失去了意义。现在,将以上需求改为列出"用户标识大于某一输入的所有用户": A. 编辑数据集,修改SQL: B. 在数据集编辑窗体内选择"参数",然后输入对应的"名称"、"数据类型"、"方向"和"默认值"(必须给出默认值)。其中"方向"表示"输入"或"输出"。对于参数,一般选"输入"。完毕之后: C. 在"数据资源管理器"视图,创建报表参数:"用户标识"。 D. 选择"表",在"属性编辑器"中选择"绑定"。此时,会出现刚才在数据集中定义的参数"id"。在"值"列,选择报表参数"用户标识": E. 运行报表时,此时会出现报表参数的输入框,填写值后即出现报表结果。 本例虽然只定义了一个报表参数,但是BIRT并没有这样的限制。我们可以创建多个参数,做法很简单:首先,查询有多个参数;定义数据集的参数时,按照查询中参数出现的顺序定义;最后,添加需要的报表参数。 5.分组:以上为例:将用户按地址分组。 A. 选择"表",点击鼠标右键,选择"插入组"。这里有两个选择:"在上面"和"在下面"。 B. 选择任意一种,弹出分组资料窗体。填写其中的:"名称"和"分组依据"。在本例中,"分组依据"是addr列。 C. 选择预览,或运行报表,查看结果。 2. 子报表 子报表是另一种最常见的报表,以上为例:列出所有用户,并列出每个用户所购买的项目,以及项目数。为了完成这种父子关系的报表,需要: A. 创建新报表和数据源。 B. 创建数据集user,使用SQL:select user.userid,user.username,user.addr from user。 C. 创建数据集items,使用SQL:
同时在数据集items上创建参数user,它对应SQL中的参数。 D. 从"Palette"视图拖入"列表"到报表中,在"属性编辑器"的"绑定"页中,选择数据集为user。它用来显示主表的信息,在本例中是用户信息。 E. 从"Palette"视图拖入"网格"到"列表"的"明细数据"中,设置网格为1行2列,它用来存放"用户姓名"和"用户地址"。在"数据资源管理器"视图,选择数据集user,将username和addr分别拖入网格的2列中。 F. 在"数据资源管理器"视图,选择数据集items,将它拖入"列表"的"明细数据"中,位于刚刚插入的网格下方。此时,BIRT会生成数据集items对应的"表"。 G. 选择刚刚生成的"表",在"属性编辑器"的"绑定"页中,会出现在items中定义的参数。修改它的值:row["userid"]。于是,父子报表就发生了联系。 H. 选择预览,或运行报表,就可以看到结果了。 很遗憾,到目前为止,另一种最常见的报表"交叉表"还不被BIRT支持。但是,BIRT的官方网站已明确表示,将在未来的版本中支持它。 3. 统计图表 俗话说,"一图顶千言"。没有图的报表是枯燥,且缺乏表现力的。在本例中,我们将使用图表来表示:每个用户的消费总数。 A. 创建新报表和数据源。 B. 创建数据集chart,使用SQL:
C. 从"Palette"视图拖入"图表"到报表中,此时会弹出"编辑图表"窗体。 D. 在"选择图表类型"页,选择图表类型为"条形图"。在"选择数据"页,使用数据集chart,同时选中username列,将其拖入"类别x系列"。对于统计列,同样将其拖入"类别y系列"。在"图表格式"页,分别为x和y系列,填写相应的显示名称。 E. 选择预览,或运行报表,即可看到统计图表。 4. 使用脚本 可以使用脚本,是BIRT的一大特色。在BIRT中,数据源、数据集和报表项,都可以书写脚本。具体做法:选择数据源、数据集和报表项任意一种对象,然后选择"脚本"页面。如选择数据源user后,对应的脚本输入页面: 选择对应的事件,然后在下方的脚本输入框中输入脚本即可。如对于第一个例子,我们需要统计用户地址是"No.5 St."的用户数: A. 选择数据集,然后选择"脚本",进入数据集的脚本编辑窗口。 B. 选择事件"afterOpen",在脚本窗口内输入:count=0; C. 选择事件"onFetch",在脚本窗口内输入:if( row["addr"]== "No.5 St.") count++; D. 选择报表,在脚本窗口选择事件"onRender",输入:this.caption=count; E. 预览,或运行报表后,会在报表的标题输出count的数值。 另外,BIRT也支持使用java来作为报表项的事件处理程序。具体做法,请参见BIRT的帮助文档。 5. 库和模板 除了脚本使开发者可以自定义报表的行为外,BIRT还提供了库和模板机制来重用设计,加快报表的开发。在TheServerSide上有一篇相当详细的文档:Using Eclipse BIRT Report Libraries and Templates。
应用集成 BIRT与现有应用的集成非常简单,由于BIRT主要是web应用,本节以web应用为例进行说明。 1. 从Eclipse BIRT官方网站下载birt-runtime-2_0_0.zip。 2. 解压之后,只需要其中的web view example目录下的内容。 3. 复制以下第三方软件包到web view example目录:
4. 将web view example目录发布到web容器中,如tomcat,改名:birtApp。 5. 启动tomcat,并访问birtApp。在首页中选择"View Example",如果成功发布,系统将提示成功。 6. 发布设计完成的报表文件,在birtApp中创建reports目录,用于存放报表设计文件。 7. 在应用中通过:http://localhost:8080/birtApp/frameset?__report=报表文件路径,就可以访问报表了。 这个web应用支持2个动作:
对于以上2个动作,以下列出可用的参数:
虽然本节所说的是针对web应用的集成,但是这种方法同样也可与非web应用集成。此时,我们可以采取一种变通的方法:在非web应用中使用内嵌的web容器,如jetty,也可达到同样的效果。这种做法和Eclipse的做法类似。还记得在报表设计时使用"报表 -> 运行报表"吗?那个弹出的窗体,实际就是一个web页面。
结论 与一些老牌报表软件相比,BIRT可能仍显稚嫩。然而,它也不乏其独到之处,如脚本控制、库和模板。加之有世界领先的报表厂商Actuate支持,实际上 BIRT的ROM(Report Object Model)就是Actuate捐献的,我们有充分的理由对BIRT的前景表示乐观。
参考资料
关于作者
|
BIRT:基于 Eclipse 的报表相关推荐
- 使用基于 Eclipse 插件框架的 ODA(Open Data Access)进行自定义数据驱动开发
ODA 之所以能够有如此强的灵活性,是因为: 它提供了一套完整的接口,开发者可以自己去实现数据源的访问逻辑,使得数据源对数据使用者变得透明.只要开发者遵循编程规范,就可以对任何数据进行驱动. 它基于 ...
- 基于Eclipse的TI集成开发环境IDE-CCSv5使用教程
TI嵌入式处理器的集成开发环境(IDE)包括调试器,编译器,编辑器,DSP/BIOS操作系统等等,现在最新的CCSv5 IDE基于Eclipse开源软件框架(v4+)并融合了TI设备的支持与功能,适用 ...
- 基于eclipse创建android的helloworld工程
基于eclipse创建android的helloworld工程 之前用过Android studio感觉很慢,决定采用eclipse来学习Android开发.下面来看是怎么创建的. 选择File--- ...
- C++:Windows环境下基于Eclipse配置C/C++开发环境
C++:Windows环境下基于Eclipse配置C/C++开发环境 目录 Windows下的MinGW下载.安装和配置 1.MinGW下载 2.MinGW安装与配置 3.基于Eclipse配置 Wi ...
- Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用的详细攻略
Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介.安装.使用的详细攻略 目录 pydev简介 PyDev 安装和配置 1.安装MyEc ...
- 基于ECLIPSE的C++环境配置。。
基于ECLIPSE的C++环境配置.. 1.安装MinGW (基于GCC的C++编译器) MinGW和Cygwin 是获取GNU toolchain的2种主要方式(GNU toolchain,GNU ...
- Hadoop伪分布配置与基于Eclipse开发环境搭建
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 基于Eclipse搭建STM32开源开发环境
最近项目不忙,想着没事看看简单的嵌入式,弄弄物联网什么的.于是就从廉价的STM32开刀了.因为一直是做PC软件开发的,那VS的智能感知那叫一个爽啊,相比之下,觉得这个Keil简直就像文本编辑器一样lo ...
- 基于eclipse RCP的文件夹管理工具
总的来说, Windows7的文件夹浏览器已经提供了很好的功能, 但是也有一些鞭长莫及的地方,比如: 无法搜索指定文件夹里面某些文件夹的文件 我将经常使用的图标资源分成几个目录存放于一个文件夹中, 这 ...
最新文章
- 使用Facade模式分析
- 使用ASP.NET Global.asax 文件
- jQuery中操作元素节点appendTo()与prependTo()的区别
- javascript 中的innerHTML的用法
- php7过滤,PHP7过滤unserialize()
- ICMP Internet控制报文协议
- vue.js的项目实战
- [转]C++的Json解析库:jsoncpp和boost
- 【Python爬虫】一个简单的网络爬虫
- 使用Struts2开发Java Web应用程序(目录)
- visio2019 专业版,两种方法
- 百度浏览器,一款简单轻快绿色纯净的浏览器
- html网页简单实现图片轮播效果,CSS3简单实现图片切换轮播
- Android应用网络限制功能实现
- 怎么修改计算机密码界面的背景,怎么修改Win7登录界面背景图片(欢迎界面背景图片)?...
- 在线编辑视频、去重消重去水印视频深度处理什么视频批量采集下载软件好?在什么网站下载好?...
- Beanstalkd源码分析—bury和kick命令的实现
- [转帖]LNMP组件安装
- Android Audio - 支持多应用同时录音_Android8.1修改方法
- Oracle,MySql和PostGreSql对中文字段按拼音排序
热门文章
- matlab生产计划问题,用MATLAB解决综合生产计划编制过程中的优化问题
- mysql持久连接_持久性连接,短连接和连接池
- ant接口自动化 junit_ant 学习(3)--结合junit形成自动化测试小框架
- kali kda安装 linux_全昭妍미연Bea MillerWolftylaKDA-THE BADDEST
- snort create_mysql_入侵检测系统Snort+Base安装
- 八十、归并排序及其分而治之思想
- 八十三、React简书项目:Styled-Components 与 Reset.css 的结合使用,完成Header布局
- 九十六、轻松搞定Python中的PPT办公自动化系列
- 计算机网络最佳路由,优化计算机网络路由的策略
- 如何无监督地获得一个句子的向量表示?