`
evoleht
  • 浏览: 98704 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在团队中用 BIRT 进行报表开发(转)

    博客分类:
  • BIRT
阅读更多
在团队中用 BIRT 进行报表开发
杨 震 (zhenyang@cn.ibm.com), 软件工程师, IBM
杨震,现就职于 IBM 中国开发中心,主要从事 Tivoli ITCAM 产品的原型开发工作。开源软件的追随者。

简介: 本文主要介绍如何在 BIRT 中创建,使用库( Library )和模板,及如何在报表中使用用户自定义的 JS 文件。


标记本文!
发布日期: 2008 年 7 月 16 日
级别: 初级
访问情况 171 次浏览
建议: 0 (添加评论)

  平均分 (共 0 个评分 )
.前言

BIRT 是一个基于 Eclipse 的开源报表插件,特别适用于给 J2EE 的 WEB 应用程序创建报表。随着 BIRT 的不断完善,采用 BIRT 进行报表设计的人也越来越多。而随着 BIRT 应用的深入,很多人都碰到了这样一些问题:

•在一个团队中,不同的设计者设计报表的时候,如何能够保证报表风格的统一?
•如何能够使得您的设计得到重用,从而提高工作效率?
•如何能够集中定义一些常用的资源,从而避免一处资源的变动,所有报表都要修改的情况发生?
由于BIRT的官方文档还不是很完善,很多问题都还不能在官方文档找到详细的说明。本文将会试图通过实际的例子,帮助读者解决以上一些问题。

BIRT的主要组件分为两部分: BIRT 报表设计器和 BIRT 运行引擎。本文将主要介绍 BIRT报表设计器中的一些功能。作为 BIRT 的进阶教程,本文将不会涉及到如何用 BIRT 创建简单报表的内容,需要读者对 BIRT 有一些初步的认识,并且掌握 BIRT 报表的基本设计方法。


--------------------------------------------------------------------------------
回页首
示例项目及相关设置介绍

为了方便读者理解,在开始介绍正式内容之前,先简单介绍一下本文中将会用到的 BIRT 示例项目和相关设置。

本文中用到的项目名称为 BirtIntroduction ,项目结构如下图:


图 1:示例项目层次结构


其中:

•JavaScripts 文件夹用于存放用户自定义的 JavaScript 文件。
•lib 文件夹用于存放用户建立的库( Library )文件。
•pic 文件夹用于存放所有报表中会用到的图片。
•template 文件夹用于存放用户建立的模板文件。
•所有的报表文件都会建立在 BirtIntroduction 下面。
在开始使用这些资源之前,还需要在Eclipse里面设置资源所在的位置。具体设置方法如下:

在Eclipse中选择 Window -> Preference ,打开 Eclipse 设置窗口,选择 Report Design -> Resource 设置资源文件夹为当前项目所在位置,如下图:


图 2:设置资源位置根目录


“ D:/BIRTReport/BirtIntroduction/ ” 是这个项目的绝对路径。 相关设置做好后,就可以开始我们的正式内容了。


--------------------------------------------------------------------------------
回页首
在报表中使用用户自定义的 JavaScript 文件

BIRT给设计者提供了强大的数据控制功能,它不仅提供了一些常用的函数,而且还允许设计者在报表中自定义JavaScript方法,并利用这些函数对报表输出样式,数值等因素进行修改,计算。但是,在大型项目中,如果很多功能相同的 JavaScript 方法的定义分布在各个报表中,对设计者来说,修改报表中的 JavaScript 将会成为噩梦一样的事情。那么 BIRT 能不能把这些功能相同的函数集中定义在一个 JS 文件中,并在 BIRT 中得以应用呢?答案是肯定的。

由于 BIRT 并没有给使用者提供 GUI 的方式为报表添加用户自定义的 JS 文件。所以我们只能通过修改 .rptdesign 文件的源文件进行 JS 文件的添加,删除工作。请看下面的详细步骤:

首先,我们要先创建自己的 JavaScript 文件。如下图:


图 3:创建 JavaScript 文件


创建的 JavaScript 文件名为 demo_scripts.js 。接下来,在新建的 JavaScript 文件中写入自定义的方法。下面是将在本文中用到的一个简单的方法,主要目的是把传入的两个数字参数通过下划线连接在一起,并且返回。


清单 1. 自定义的 JavaScript 方法
               
function combine(num1, num2) {
var str = num1 + '_' + num2;
return str;
}



JavaScript 文件定义好了以后,就可以在报表中使用了,具体使用方法是:

打开报表定义文件,并且在主编辑区切换到” XML Source ”标签,然后在报表定义文件中加入如下语句。


清单 2. 把用户自定义的 JavaScript 文件加入到报表中
               
<list-property name="includeScripts">
        <property>JavaScripts/demo_scripts.js</property>
</list-property>



如下图:


图 4:在报表中使用 JavaScript 文件


由于在文章开始的地方已经设置好了资源根目录,所以” JavaScripts/demo_scripts.js ”这个相对路径映射的绝对路径就是“ D:/BIRTReport/BirtIntroduction/JavaScripts/demo_scripts.js ”。

到这里就可以在报表中使用 demo_scripts.js 中定义的所有方法了。使用方法请看下面的简单例子。

在报表中用鼠标双击 Number 列,打开数据编辑窗口,输入名称为 CombineNum ,如下图


图 5:打开数据编辑窗口


单击 fx 按钮,打开表达式编辑窗口,输入如下内容:


清单 3. 使用 JS 文件中的方法
               
combine(row["CUSTOMERNUMBER"],row["ORDERNUMBER"])



如下图


图 6:使用 JS 文件中的方法-1


选择 OK 按钮,确认输入,回到报表设计页面中。如图 7


图 7:使用 JS 文件中的方法-2


下面让我们来预览一下这个报表,如图 8:


图 8:预览报表


在图8中,我们发现 NUMBER 列中的数据是合并以后的。这说明我们的方法起到了作用。是不是很简单?

不过,这里要特别指出的一点是,BIRT还是一个发展中的工具,有些地方还不是很完善。所以用户自定义的JS文件在报表的有些地方还不能够使用。比如,在图表( Chart )中的 Script 中,如果想在 Event Function 使用JS文件中的方法,在当前版本中(2.2.2)是不行的。据 BIRT 的开发者说,这是因为图表( Chart )的渲染引擎是一个独立的部分。当然,暇不掩玉,相信 BIRT 会很快修正这些问题的!!


--------------------------------------------------------------------------------
回页首
BIRT 中库( Library )的创建与应用

库( Library )是一组用户自定义的报表元素的集合,比如数据源,常用的数据集,通用的报表参数定义等等。通过库的应用,设计者可以集中定义常用资源,重用功能设计。

下面将会详细介绍库在BIRT中的创建与应用:

创建库( Library )

在lib文件夹上单击鼠标右键,并在弹出菜单中选择 New -> Library , 如下图 9 所示:


图 9:创建库


在接下来的窗口中输入这个库的名字,如图10


图 10:输入库的名字


库是以 .rptlibrary 为扩展名的文件。例子中的库名为 demo_library.rptlibrary 。

打开新建的库,你会发现基本所有能在报表中定义的元素都可以在这里定义。开发者可以从项目中汲取可被重用的资源,集中定义到库中来。比如数据源定义,常用的数据集定义等等。

在下面的例子中,以一个数据源的定义说明了如何在库中添加新的项目。

和在报表中定义数据源一样,在 Data Explorer -> Data Sources 上右键单击鼠标,在弹出菜单中选择 New Data Source 。


图 11:在库中创建数据源


选择数据源类型,并且输入数据源名称,并选择下一步( Next ),本例中,数据源名称为 Demo_Data_Source 。如图 12 所示:


图 12:输入数据源的名称及类型


在下面的数据源定义窗口中输入数据源的信息


图 13:输入数据源的信息


单击确定( OK )按钮,完成数据源的创建。到此,我们就为库中创建了一个数据源。

库创建好了,如何在我们的报表中使用库中的资源呢?下面将会讲解库的使用。

在报表中使用库 ( Library )

首先,打开您的报表文件,在 Library Explore 中选择要用到的库,在这个例子中为 lib -> demo_library.rptlbrary 。在库上单击鼠标右键,然后选择 Use Library 选项。如图14所示


图 14:使用库


继续打开您的报表设计页面,并选中 Outline 视图,把定义在库中的报表元素用鼠标从 Library Explore 视图中拖到 Outline 中相应的位置。本例中为把数据源 Demo_Data_Source 添加到 DemoReport.rptdesign 中去,如图 15 所示:


图 15:使用库中定义的元素


这时,当创建数据集时,您会发现已经可以用到这个数据源了,如图 16 所示:


图 16:使用库中的数据源创建数据集


在进行报表设计的时候,当您库中的数据源或其他库中信息更新后,您需要刷新一下您的报表,从而使更新后的库中的元素起到作用。方法是,打开您的报表,在 Outline -> 您的报表上单击鼠标右键,然后选择 Refresh Library 选项来更新报表,如图 17 所示:


图 17:更新库中的信息


如果您的项目规模很大,库的使用好坏与否,将在很大程度上决定项目后期维护上的难度。想象一下,您的项目中有上百个报表,但并没有用到库,如果您的报表的数据源发生了改变,那么上百个报表,每个报表的数据源都要重新修改一下,这将是一件很麻烦的事情。所以,在报表设计之前,先将常用资源定义在库中会是一个很好的开发习惯。


--------------------------------------------------------------------------------
回页首
使用模板( Template )定制统一的报表风格

一个团队中,每个人的审美观都是不完全一致的,如果没有一个集中的控制,不同的队员设计出不同风格的报表会使得一个项目变得像很多项目的集合。在一个项目中,维护报表风格的统一至关重要。BIRT为开发者提供了模板的概念,通过使用相同的模板,可以保证团队中不同设计者设计出来的报表风格统一。

BIRT 的模板中定义了报表的版面设置,字体大小,配色方案等一系列设置, 下面将详细讲解BIRT 模板的创建与使用方法。

创建模板 ( Template )

在 Eclipse 中选择 File -> New –> Template ,如图 18 所示:


图 18:创建新的模板


在接下来的窗口中,为新模板输入一个名字,并且写上一些注释。这些注释对不熟悉这个模板的使用者来说,将会有很大的帮助,如图 19 所示:


图 19:输入模板信息


选择结束( Finish )创建新的模板。

接下来,打开新的模板,您可以像定义普通报表一样在模板中添加必要的元素,例如字体的大小,页眉页脚的设置等等,下面的例子在模板中定义了一个数据集,一个图( Chart )和一些页面设置,如图 20,21,22 所示:


图 20:模板中用到的数据集


图 21:模板中定义的主要内容


图 22:模板中定义的 Master Page


让我们来预览一下这个模板的样子,如图 23:


图 23:预览模板


模板创建好了之后,需要发布出去才能使用,方法是:鼠标右键点击创建的模板,选择 Register Template with New Report Wizard 如图 24 所示:


图 24:发布模板


在接下来的窗口中为模板输入名称和描述,在这个例子中,模板的名字叫 DemoTemplate ,如图 25 所示


图 25:发布模板-输入名称和描述


这样一个模板就可以被使用了。

使用模板 ( Template ) 创建报表

下面我们将用一个例子来说明如何用刚刚创建的模板建造新的报表。

在 Eclipse 中选择 File -> New -> Report , 如图 26 所示:


图 26:创建新的报表


在接下来的窗口中输入报表的名称及所在文件夹,本例中报表名称为 demo_report_from_template..rptdesign , 如图 27 所示:


图 27:输入报表名称


在接下来的窗口中,可以看到刚刚发布的模板 DemoTemplate ,选择这个模板,如图 28 所示:


图 28:选择模板


单击结束( Finish )按钮,报表就生成好了,我们来看看新生成的报表,如图 29:


图 29:从模板中生成的报表


在预览一下新建的报表,如图 30 所示:


图 30:预览新的报表


是不是和刚刚建立的模板完全一致?这时,报表设计者只需要修改相应的数据集,参数等与其他报表不同的地方,并保留模板自带的风格,就可以做出风格统一,但用处不一样的报表来了。


--------------------------------------------------------------------------------
回页首
结束语

虽然 BIRT 还存在着这样那样的一些小问题,但是在报表领域,它已经成长成为一股不可被忽视的力量。相信随着 BIRT 的不断完善,我们会拥有一个完美的报表工具。
分享到:
评论

相关推荐

    在团队中用 BIRT 进行报表开发

    标题“在团队中用 BIRT 进行报表开发”意味着我们将探讨如何在团队环境中利用BIRT进行报表的设计、开发和协作。BIRT 提供了一个图形化的报表设计界面,使得非程序员也能创建复杂的报表,并且可以与开发团队成员共享...

    Delphi中用FastReport制作报表

    Delphi中用FastReport制作报表.doc

    asp.net 中用excel 实现报表设计

    ### ASP.NET 中用Excel实现报表设计 #### 摘要 报表打印作为管理信息系统的关键组成部分,在各类业务场景中发挥着至关重要的作用。其中,Excel因其强大的功能、灵活的应用方式及广泛的兼容性,成为了报表设计与打印...

    intouch中用excel做报表视频教程.zip

    3. **绑定数据源**:在Intouch中,将Excel模板与OPC服务器上的数据点进行绑定,这样每当现场数据变化时,报表也会自动更新。 4. **集成到Intouch应用**:将Excel报表作为对象添加到Intouch的窗口或画面中,用户可以...

    INTOUCH中用EXCEL打印报表

    1. **自动生成标记名**:在INTOUCH开发环境中,用户需要通过插入“历史趋势向导”(HistData)来自动创建一系列标记名(Tag),这些标记名将以“HDW”为前缀,并附加上它们的DDE的ITEM命名。以下是一些关键标记名及其...

    在SAP中用承诺项目出现金流量表(报表开发源代码).doc

    在报表开发源代码中,直接法是将与现金流量相关的数据装入部表 G_T_FMMP,然后计算现金流量。直接法包括三个步骤:装入金流量表定义参数、装入与现金流量相关的数据、计算现金流量。 报表开发源代码是实现 SAP 中...

    在VB中用数据报表设计器创建报表.doc

    总的来说,VB中的数据报表设计器和数据环境设计器为开发者提供了强大的报表设计和数据管理工具,使他们能够在不离开VB集成开发环境(IDE)的情况下,高效地创建和管理复杂的数据库报表。这种集成化的设计方式极大地...

    在SAP中用承诺项目出现金流量表(报表开发源代码).pdf

    在 SAP 系统中,创建一个用于展示承诺项目现金流量的报表是一项关键任务,这有助于企业更好地管理和监控其财务流动。以下将详细解释这个过程涉及的知识点和代码结构。 首先,我们要了解SAP中用于处理财务数据的一些...

    如何在组态软件RSView32中用VBA实现报表参考.pdf

    VBA是基于VB语言的一种编程环境,它允许开发者在诸如Microsoft Office的应用程序中进行定制化开发。在RSView32中,利用VBA可以访问和操作数据,与外部数据库进行交互,如通过ODBC(Open Database Connectivity)接口...

    oracle 报表开发中用PCK直接生成xml数据文件

    在Oracle报表开发中,生成XML数据文件是一种常见的需求,用于数据交换、存储或进一步处理。本文将详细讨论如何使用Package(PCK)直接生成XML数据文件,特别关注使用`dbms_xmlgen.getXML()`过程的方法。 Oracle的`...

    在SAP中用承诺项目出现金流量表(报表开发源代码)(_CRM产品经理 需求规格说明书管理系统规格需求说明书模板.doc

    在SAP系统中,开发一个用于显示承诺项目现金流量表的报表是一项关键任务,这有助于企业更好地管理和监控其财务流动情况。以下将详细介绍这个报表开发的相关知识点。 首先,要理解SAP中的“承诺项目”(Commitment ...

    软件开发过程中用到文档的模板

    在软件开发过程中,文档起着至关重要的作用,它们记录了项目的各个阶段,帮助团队成员保持一致性和理解。以下是一些常见的软件开发文档模板及其详细解释: 1. 可行性研究报告:这是项目启动阶段的关键文档,它评估...

    在组态软件RSView32中用通过accessVBA实现报表.docx

    然而,RSView32 并没有提供强大的报表功能,如果只进行简单的数据分析,报表变化不是很复杂,并且对数据可移动性无太高要求,组态软件可实现。然而,一旦涉及到复杂的数据处理,组态软件往往表现得力不从心。 因此...

    我的博文中用到的Excel报表模板

    标题中的“我的博文中用到的Excel报表模板”暗示了这是一个与Excel电子表格设计相关的主题,主要用于创建报告或数据分析。这个模板可能包含了预设的格式、样式、计算公式或者图表,方便博主在撰写文章时快速生成专业...

    在Visual C++中用ADO进行数据库编程

    在Visual C++中使用ADO(ActiveX Data Objects)进行数据库编程是一种常见的技术,尤其是在需要与各种数据源交互的Windows应用程序开发中。ADO提供了一个统一的数据访问接口,使得开发者能够使用一致的方式访问不同...

    wincc 7.2 报表 高级培训

    在WinCC系统中,需要进行报表输出的内容包括但不限于变量记录、报警记录、用户归档、实时数据等。实现报表输出的基本要求通常包括数据准确性、格式规范化、趋势分析能力和灵活的条件设置。 为了满足这些报表输出的...

    Delphi中用QuickReport实现动态报表

    通过把QuickReport自带的“报表设计器”集成进自己的项目,最终被生成进exe文件,可以方便的实现报表的修改。

    Java程序中用JFreeChart制作图形报表

    【Java程序中用JFreeChart制作图形报表】 JFreeChart是一个强大的开源Java库,用于创建各种图表,如折线图、柱状图、饼图、散点图等。在Java程序中,我们可以利用JFreeChart来生成图形报表,以便更好地可视化和理解...

Global site tag (gtag.js) - Google Analytics