BIRT学习经历

BIRT学习经历

作者:邓文敏 Email:[email protected]

一. 环境的配制

开发环境:

1.Eclipse 3.1 下载: http://www.eclipse.org/downloads/

2.birt-report-framework-2_0_1下载:

3.Ajax库文件prototype.js(没有这个文件,无法看到报表)这个文件一般可以从网上搜到:把这个文件放到

plugins\org.eclipse.birt.report.viewer_2.0.1\birt\ajax\lib目录下

4.增加itext-1.4.1.jar库用于处理PDF格式:

把它放到plugins\org.eclipse.birt.report.engine.emitter.pdf_2.0.1\lib目录下。 发布环境:

1.birt-runtime-2_0_1.zip 下载:

将压缩包中的birt.war放到%TOMCOT_HOME%/webapps目录下,可以自己去解压,也可以打开Tomcat让它自己解压这当前目录下。

2.Ajax库文件prototype.js(没有这个文件,无法看到报表)这个文件一般可以从网上搜到:把这个文件放到

%TOMCOT_HOME%/webapps/birt/ajax/lib目录下

3.增加itext-1.4.1.jar库用于处理PDF格式:

把它放到

%TOMCOT_HOME%/webapps/birt/plugins/org.eclipse.birt.report.engine.emitter.pdf/lib目录下。

二. BIRT初次接触(如果接触过的,点这里跳过这一节)

我们使用的开始,也是和任何程序一样,也是简单的Hello World开始! 首先,打开eclipse,新建一个“报表项目”,填入工程名:birtreport.。 接下来,我们新建一个“报表”,填入文件名:helloworld.rptdesign。

点下一步,在这里我们可以选择我们的报表模板,我们现在不使用模板,选择“空白报表”。

直接点“完成”,进入报表设计视图,如果没有自动进入的话可以通过选择视图窗口选择“报表设计”视图。

现在,先介绍一下界面。从左到右,从上到下一一介绍。(跳过)

左上方位的面板中有三个页,分别是调色板页、数据资源管理器页和库资源管理器页。调色板页我就不就说了吧,一目了然,都是我们在要用的一些常用元件,在报表设计的时候,可以从这里直接拖到报表上去使用。数据资源管理页就是设置和查看报表中到要用的数据,数据源,是数据的来源,或提供者。如xml数据源、jdbc数据源、脚本数据源等;数据集,是数据集合,它必须与数据源关联,可以理解为查询的结果;报表参数,用于接受从外面传入的数据,使用它可以构建更灵活的报表。库资源管理器页是对自己做好的报表库进行管理的,并可以像调色板一样把在库中设计好的报表项直接拖到设计报表中使用,使开发更加的快捷。

左下方位中有二个页,一个是工程浏览器页,另一个是大纲页。工程浏览器页一般用于文件切换中,大纲页中列出了当前的报表或是库中的数据项与页面中的部件项,可以直接这里进行操作。

右上方位的整个大页面,就是我们以后工作的区域了,他为分了上下各三个页。

下面第一个是布局页,它分为其上面的三个页。

第一个是正常页,是报表设计的主体设计页面。

第二个是主页页,这里是处理页眉和页脚的。

第三个是XML源页,在这里我们可以对报表的XML内容进行修改,新

手不建议到这里处里。

下面第二个是预览页,可以预览自己做好的报表。

下面第三个是脚本页,因为BIRT是支持javascript脚本的,所以,可以在这

里增加功能脚本,做你做出来的报表更加的灵活。

右下方位是各种属性页,这通过这里可以有很方便的给报表中的元件设置或改变属性。

现在,整个工作区都介绍完了,接着做我们的报表。我们这个报表现在不用数据,直接在数据资源管理器中的报表参数处右击,在菜单中选择新建参数,在名称中输入“mystr”,其它的为默认的,直接点OK。(跳回)现在我们把数据资源管理器切换为

调色板,从里面把数据元件拖到报表中,或是直接在布局页中,右击,在菜单中选择插入,再选择数据,这时就会出现一个表达式生成器,在类别中选择报表参数,在子类别中选择全部,在双击以插入框中双击我们刚创建的参数。这时就会在表达式窗中出现“params[“mystr”]”,这个我们也是可以直接输入的。点OK完成。

现在我们点预览,此时会跳出一个输入参数的窗体,我们在mystr下输入:hello world!。点OK,这时就可以看到,我们做好的报表中的出现了刚输入的信息了。

三. 数据源使用

1.脚本数据源

在先前建的工程中,再新建一个报表,文件名为testscriptsource. .rptdesign,

直接点Finish。

在数据资源管理器中数据源上右击,在菜单中选新建数据源,在弹出的

窗体中,我们选择脚本化数据源,填入数据源名称:scriptsource

这时,点报表设计视图的脚本页,在下拉选框中,选open事件,当数据

源初始化时,这里则是第一个被调用的脚本,可以在这里定义全局变量,或是对传入的参数进行处理如:

importPackage(Packages.java.io);

fos = new java.io.FileOutputStream("c:\\logFile.txt");

out = new java.io.PrintWriter(fos);

out.println("ReportDesign.initialize");

par = params["aa"];

if (par != null)

{

}

else

{

{ out.println("null"); out.println(par);

像我们上面一样,我们在open处定义了一个日志器,这样就可以跟踪我

数据集的生成,可以从数据集的脚本事件中写。首先,选中要写入脚本的

数据集,在此数据集上单击右键,在弹出菜单中选编辑,在输出列中可以加了你的数据的列,用于在数据集的生成中。我们现在在里面加入一个列,名称为:data,类型:任何。确定OK

然后,选择设计视图中上脚本,在open事件中写入脚本中要用到或是要

初始化的变量。我们在这里写:

注意这里,在fetch中当返回为false是表示跳出fetch事件。Row.data 和 row[“data”]是一样的,都是引用数据集列,在报表中还可以用row[0]来得到当前循环的编号,是从0开始的。

现在,就可以往报表中拖数据了。首先,拖一个表到报表中,然后,像下图一样填入数据。

Row[“data”]处的数据,可以通过直接从数据集scriptset中拖动列data,到数据明细行中,这个行是用于循环数据用的,每循环一次就会增加一行相对应的数据。

现在就可以预览了。

2.JDBC数据源的使用

首先,老样子,新建个工程,工程名为:TestJDBCReport

新建一张报表,报表名为:JDBCReport.rptdesign

新建一个数据源,数据源名:JDBCSource,数据源类型为JDBC Date Source,点Next,在这里我们分别填入数据库驱动类,如果下拉菜单中没有相对应的驱动类,可以点管理驱动程序,这些对话框中加入你的驱动类,然后,这时下接菜单中就会有你刚加入的驱动类了。我的输入为:

我还是的是SqlServer中的练习用的库northwind,点测试连接,连接成功通过。点Finish。

现在我们在这里要建两个数据集,一个是普通查询,别一个是调用存储过程。首先,来完成第一个。新建一个数据集(步骤就不说了,上一个例子有),数据集名为:JDBCQuerySet,数据源就用默认的。这时会发现在数据集类型中有两个选择一个是Select Query,一个是Stored Procedure Query,一看就明白了,一个是普通查询,一个是存储过程的。其是要用存储过程,也没有必要选Stored Procedure Query,在Select Query中也是一样的使用的。可能是为了方便大家区分吧。我们选Select Query,点Finish。

现在,在弹出的对话框中,在最右边部分我们就可以写我们查询语句了,可以直接输入,也可以从中间的可用数据项中拖到查询语句中,点左边树列中的预览结果,就可以看到我们查到的数据了。

我的查询语句为: Select EmployeeID, LastName, FirstName, City, Notes from Employees

如果,我们想在查询语句中使用参数,可以在条件部分用 ? 代替。然后在左边树列中选择参数,这里可以写入与?号关联的变量。顺序为查询语句中的?号顺序。如: Select EmployeeID, LastName, FirstName, City, Notes from Employees where EmployeeID = ?

点OK。

然后,我们再来创建一个调用存储过程的数据集。和上一个建数据集的方法一样,数据集名为:testJDBCspq,只是在数据集类型中选择Stored Procedure Query项(其实也可以不用)。点Finish。

跳出了和前面一样的编辑数据集对话框,所以,我可想像,他们就是一样的。如果你选择数据集类型是存储过程的,它就会出现一个存储过程的调用方法在查询语句输入框中。我们输入:

{call dbo.CustOrderHist(?)}

也使用带参方式的。参数的设置也是和上面一样的。

点OK。

现在我们直接把这两个数据集分别拖到报表上,我们可以看到,它自动产生了二个表。现在就可以预览了。

图注:我两个数据集都用的是带参的

我们现在预览只能看到数据集中的那个参数的默认值的结果。现在我们要像Hello World例子中的方法一样,定义二个报表级参数,参数名为:EmployeeID,类型为小数(我想可能是翻译的问题,应该是整型),默认值为:1,和别一个参数,名为:CusterID,类型为字符串型,默认值为:"ALFKI"(注意:字符串值一定要打引号,不然就当改量用了)。要是不会定义可以跳回去看一下(查看)。然后,我们要把它与报表中的参数绑定到一起。点左下视图

中的大纲视图

选中正文下的表,然后在右边的属性编辑器中选绑定页

在些页中,选择数据集为我们使用的数据集名:testJDBCset,这时就可以看到我们在数据集中定义的参数就显示在下面。

在值项中的输入与参数绑定的表达式,与点值项右边的按钮,在弹出的表达式生成器中生成我们要的表达式。

我们输入的内容是:

params["EmployeeID"]

存储过程中的参数绑定也是一样的,我就不重复了。 现在我们就可以预览了。 点预览后,按上面的显示报表参数按钮,在弹出的对话框中输入对应的参数。点OK,就可以看到效果了。 3.总结

脚本中也可以使用我们自己定义好的java类,把写好的类放在

%TOMCAT_HOME%\webapp\birt\WEB-INF\classes下,如果TomCat在运行时你把类放进去了,你必须重启TomCat后才可以使用,Eclipse也是一样的,内嵌的Birt发布程序在

plugins\org.eclipse.birt.report.viewer_2.0.1\birt\WEB-INF\classes下。在脚本中要使用类时用此方法定义:

SimpleClass = new Packages.SimpleClass();

如果你们类在某个包下,如:mypackage.SimpleClass,则定义时为: SimpleClass = new Packages.mypackage.SimpleClass();

数据源就介绍这两个了,别的我也就没有去用过了,因为,也就会用这么点,差不多可以解决碰到的很多常见数据问题了吧。为了帮助大家知道在什么地方写脚本,我给出它们的调用顺序。

使用JDBC数据源时的事件流程(因为要让他跑起来,我在报表中就放了一个data元件,用于显示数据用):

ReportDesign.initialize data.onPrepare ReportDesign.beforeFactory ReportDesign.beforeRender dateSource.beforeOpen dateSource.afterOpen DateSet.beforeOpen DateSet.afterOpen DateSet.onFetch data.onCreate data.onRender DateSet.beforeClose DateSet.afterClose ReportDesign.aferRender ReportDesign.afterFactory dateSource.beforeClose dateSource.afterClose 这是使用脚本数据源是的事件流程(同样也只放了一个数据元件data): ReportDesign.initialize data.onPrepare ReportDesign.beforeFactory ReportDesign.beforeRender dataSource.beforeOpen dataSource.open dataSource.afterOpen dataSet.beforeOpen dataSet.describe dataSet.Open dataSet.afterOpen dataSet.fetch dataSet.onFetch dataSet.fetch data.onCreate data.onRender dataSet.beforeClose dataSet.close dataSet.afterClose ReportDesign.aferRender ReportDesign.afterFactory dataSource.beforeClose dataSource.close 4.小技巧

1) 排序的使用

排序的方法有两种,一种是直接写SQL语句时使用order by,并一

种就是在报表上使用排序了,我这里只介绍在报表上使用的排序(前面那个就不用我说了,因为大家都会用)。在报表上排序主要是在表中使用,首先我们往报表中拖入一个表,然后选中表(选中方法直接从大纲视图中选择表),在属性编辑器中,可以找到一个排序属性页,选中它,进入排序页。

点击右边的添加,这时在下面的列表中就会增加一行输入栏,在此输

入栏中,就可以填入要排序的字段了,还可以写表达式。

2) 资源文件的使用

首先,选中报表(随便点报表的一个空白的地方,在属性编辑器中选

择常规,这时可以看到一个资源文件的栏,点后面的添加,填入资源文件名(资源文件和报表放在一起),确认,这时在资源文件下拉菜单中就会有你刚加入的资源文件名,选中后就可以在标签和文本中使用了。使用的方法是,选中标签或文本,在属性编辑器中的属性中选定位,点后面的第一个按钮进入选择关键字对话框,在这里就可以选择和编辑资源文件中的内容了。

3) 突显的使用

突显的使用可以很好美化我们的报表,做出像下面一样的报表。

首先,往报表中拖入一个表,放入数据,然后,选中要突显的明细数

据行,选的方法可以直接在报表中选中它,也可以通过大纲视图中选明细数据下的行,在属性编辑器中选择突出显示,点添加,在弹出对话框中填入如下数据:

点OK,预览就可以看到效果了。

三.调色板中的组件的使用

1.表的使用

表的使用中我这里主要讲的是表的嵌套使用,在表的嵌套中,主要碰到的问题就是,表与表之间数据与参数的传递问题。这个问题搞清楚了,基本上表的嵌套就没问题了。

首先,创建两个数据集,一个主表用,一个子表用。就拿我们上面JDBC数据源的那个例子来讲吧。 创建的主数据集SQL为:

Select EmployeeID, LastName, FirstName, City, Notes

from Employees

创建子数据集SQL为:

select TerritoryID

from EmployeeTerritories

where EmployeeID = ?

添加一个参数为EmpID。

完成后,现在可以从调色板中拖一个表到报表中,在表的属性编辑器

中的绑定中的数据源选为主数据集名,然后,把主数据集的字段拖到表中。

或是直接把主数据集拖到表中。

然后,选中表的最后一列,右击,插入新的一列用于放子表的。现在,可以把子表数据集拖到刚插入的新列中的明细数据行中,选中子表,在

属性编辑器中的绑定中的值栏填入:

row["EmployeeID"]

如果我们绑定时值这里用的是表达式生产器来完成的,我们会发现子表的可用数据集中多了一个父表的数据集,所以,可以通过这里双击生成表达式。

完成,预览看结果吧。 2.图表的使用

图表的的使用主要就是往里面填数据就是了,所以,这里就介绍一下图表中各个属性的用途。

第一页就不用怎么介绍了,图表类型选择。

这是一页是主要数据页,值(Y)系列是Y轴的数据,可以加入多个系列的数据来统计(如图中所视),类别(X)系列是X轴数据,可选Y系列分组是分组用数据。然后,是数据集的选择,筛选器与参数的使用,和上面一样操作。

最后一页是最复杂的,因为是整个图表的样式与格式排布,还有就是与用户交互的设置。这个可以自己一项项的去尝试着去试试。

具体的使用可以去看michael写的例子吧,我也是看他的。

http://www.eclipseworld.org/bbs/read.php?tid=3518

四. 模板与库的使用

这个其实也不要怎么讲,用设计报表了,库就差不多会用了。模板就是设置一下就可了(这个我也没有去用过,不好意思,只是看了一些例子而以)。

五. 编程开发

可以一起讨论,还还没有去深究,有兴趣的可以给我发Email一起讨论讨论。


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn