BIRT报表应用预研报告.docx
- 文档编号:1065310
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:46
- 大小:1.39MB
BIRT报表应用预研报告.docx
《BIRT报表应用预研报告.docx》由会员分享,可在线阅读,更多相关《BIRT报表应用预研报告.docx(46页珍藏版)》请在冰点文库上搜索。
BIRT报表应用预研报告
BIRT报表应用预研报告
作者:
吴红佳王飞
2007年6月14日
版本历史
版本/状态
作者
参与者
起止日期
备注
草稿
吴红佳王飞
2006-6-8
2006-6-14
0.文档介绍
0.1文档目的
0.2文档范围
0.3读者对象
0.4参考文档
提示:
例如:
0.5术语与缩写解释
缩写、术语
解释
…
1.背景介绍
(1)、英文简介
BIRTisanEclipse-basedopensourcereportingsystemforwebapplications,especiallythosebasedonJavaandJ2EE.BIRThastwomaincomponents:
areportdesignerbasedonEclipse,andaruntimecomponentthatyoucanaddtoyourappserver.BIRTalsooffersachartingenginethatletsyouaddchartstoyourownapplication.
(2)、中文简介
BIRT是一个Eclipse-based开放源代码报表系统。
它主要是用在基于Java与J2EE的Web应用程序上。
BIRT主要由两部分组成:
一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行期组件。
BIRT同时也提供一个图形报表制作引擎。
BIRT拥有和Dreamweaver一般的操作界面,可以像画table一样画报表,也可以生成图片、导出Excel、html分页,样式比script设置简单,另外BIRT还有OLAP导航功能。
(3)、基本概念
∙数据源:
数据的来源,或提供者。
如xml数据源、jdbc数据源等。
∙数据集:
数据集合,它必须与数据源关联,可以理解为查询的结果。
∙报表以及报表项,报表可视为是针对一组数据集的表现形式,而报表项这是这个表现形式的某个具体的单元。
它们之间的关系,与窗体和控件的关系非常类似。
报表、数据集、数据源三者间的关系:
数据源---数据集---报表。
∙报表参数:
查询参数的表现形式,使用它可以构建更灵活的报表。
∙模板和库:
主要用于复用报表设计,提高报表开发的效率。
2.技术预研目标
能够使用BIRT设计并展示报表
3.技术预研取得的工作成果
BIRT报表设计器的安装与配置
使用BIRT报表设计器设计报表
BIRT报表的运行:
多种方式展示设计好的报表
4.BIRT报表应用的研究报告
运行环境:
Eclipse3.2.2+汉化包
Birt2.1.2+汉化包
Tomcat5.X
4.1BIRT报表设计器的安装与配置
BIRT的下载地址是:
http:
//download.eclipse.org/birt/downloads/有两种下载方式:
(1)、All-in-One版本(birt-report-designer-all-in-one-2.1.2.zip),它包含了运行BIRT系统所需的组件,可直接应用。
(2)、Framework版本(birt-report-framework-2.1.2.zip),对其则要做一些相应的操作了:
在你安装的MyEclipse路径中,打开eclipse文件夹,在文件夹中再新建一文件夹(如:
birt),然后打开birt-report-framework-2.1.2.zip把其中的eclipse文件夹放入新建的birt文件夹中。
然后在同文件夹的links文件夹中,新建一个.link文件(如:
birt.link),且修改其(birt.link)里的路径(如:
path=d:
\\MyEclipse5.5.1GA\\eclipse\\birt)即已完成。
4.2使用BIRT报表设计器设计报表
4.2.1设计一个简单的报表
(1)创建一个报表项目
选择“文件-新建-项目”,出现一新项目对话框。
打开"业务智能和报表工具”(BusinessIntelligenceandReportingTools)组,并选择"报表项目"。
点击下一步(next),输入MyfirstBirt作为项目名字
点击“完成”。
点击“是”,提示你切换到报表设计视图。
(2)创建一个报表
选择文件->新建->报表。
新建报表(newreport)对话框出现。
在TreeView中选择我们之前创建的项目:
MyfirstBirt
接下来在文件名字段输入:
first.rptdesign
点击下一步。
你可以在弹出的对话框中,任选一种报表模式,我这里以空白报表为例。
点击完成。
(3)建立数据源
打开数据资源管理器。
选择数据源节点。
用鼠标右键单击打开弹出菜单。
选择新建数据源。
新建数据源对话出现。
数据源类型的创建:
1)、选择ClassicModelsInc.示例数据库
在数据源名称输入框,输入"example"。
点击下一步。
点击完成。
作为将来的参考,我们回顾一下您将如何改变数据源:
打开数据资源管理器
打开数据源节点。
双击数据源。
数据源编辑器被打开。
您能做所有有需要的更改。
点击确定保存您的变动。
2)、选择JDBC数据库
在数据源名称输入框,输入"sample"。
点击下一步。
在管理驱动程序中添加JAR包,然后测试连接,成功后,确定即可。
注意:
我用的是SQLSERVER数据库,在管理驱动程序中要导入3个sqlserverJAR包(msbase.jar,mssqlserver.jar,msutil.jar),大家也可以用其他数据库,只不过要注意JAR包和数据库URL就可以了。
(4)建立数据集
打开数据资源管理器
选择数据集节点。
用鼠标右键单击打开弹出菜单。
选择新建数据集。
新建数据集对话将出现。
“在数据集名称”输入框,输入"examples"。
确保数据源下拉框显示的是我们之前创建的example数据源。
确保数据集类型下拉框选中的是"SQL查询语句"。
点击下一步,进入“查询”对话框。
这是创造和改变SQLquery的地方。
一旦您有基本的query,您能增加WHERE子句,调整所选择的字段集,等等。
使用SQL编辑器增加计算字段,由数据库引擎负责计算。
使用SQL别名子句给这样的字段命一个名字。
我写了一个SQL的查询语句:
select*fromCLASSICMODELS.PRODUCTS
点击完成,弹出一编辑数据集对话框,在“输出列”单元编辑其显示名称
在“预览结果”单元,可查看要显示的全部信息。
点击确定即可。
(5)建立表项
把鼠标移到palette,即可弹出一浮动框,选中“表”项,
用鼠标拖动“表”项,移到编辑区,即可弹出“插入表”对话框,
修改其属性后,(注意“数据集”要选上已有的数据集)点击确定
此表包含了页眉(表头),明细数据行(数据),页脚行。
拖动左边数据集“examples”下的列到表的相应明细数据行
拖完后点击“预览”,在编辑区就可以看到报表数据
这样一个简单的报表就做好了,(设计器的操作很多,在这里就不一一作介绍了)。
4.2.2给报表添加统计图表
1.添加新数据集chart,用于统计图表;
2.从"Palette"面板拖入"图表"项到报表中,此时会弹出"新建图表"窗口,选择图表类型;
3.在"选择数据"页,使用数据集chart,同时选中username列,将其拖入"类别(x)系列"。
对于统计列,同样将其拖入"类别y系列"。
这里还可以做数据筛选等操作;
4.在"图表格式"页,分别为x和y系列,填写相应的显示名称。
还可以做一些显示细节的调整;
5.预览,如图
4.2.3给报表添加输入参数来过滤数据
(1)添加数据集参数
在数据资源管理器中选择数据集,点右键或双击编辑数据集
编辑查询语句,在其后加入where过滤条件,用?
来代替数据集参数的值
在参数项中,点右上方的新建按钮,新建一个数据集参数
参数名随意,这里用param1,类型根据where条件后的参数类型决定,方向一般为输入,可以设置默认值
(2)添加报表参数
在数据资源管理器中的报表参数上点右键,新建报表参数
新建报表参数,名称随意,可以与数据集参数不同
(3)绑定数据集参数与报表参数
在设计视图中选中用来展示数据的表,如果下面的属性编辑器如图显示,说明选中了
在属性编辑器-表中点绑定选项卡,然后点击数据集参数绑定按钮
选中参数行后点编辑按钮
可直接输入params["报表参数名"],或者点输入框右边的按钮
在表达式生成器下方点报表参数/全部,双击param1,确定
点预览,这时会弹出参数对话框,默认值为1000,这里改为1010,确定
看到输出结果,只显示了用户标识大于或等于1010的用户信息
4.2.4定义报表模板
BIRT提供了模板机制来重用设计,可以加快报表的开发,定义报表模板有以下两种方式:
1.文件-新建-模板,输入名称等,可以设计一个模板文件;
2.对于已经设计好的报表,可以发布为模板。
在设计好的报表文件上点右键,选择发布到模板文件夹,输入名称即可。
4.2.5报表设计的一些小技巧
(1)给表添加行号
选中表的第一列,点右键,插入/在左侧插入行
在第一列第一个单元格插入一个“文本”项,输入“序号”
在第一列第二个单元格中插入一个“数据”项
如图输入后,预览即可看到结果
(2)隔行高亮显示
选中数据显示行,这里是第二行
在属性编辑器-行中点突出显示选项卡,点添加按钮
如下图设置
预览,结果见下图
4.3展示设计好的报表
首先需要下载BIRT报表的运行环境包(目前最新的稳定版为2.1.2)
http:
//www.eclipse.org/downloads/download.php?
file=/birt/downloads/drops/R-R1-2_1_2-200702271000/birt-runtime-2.1.2.zip
下载完成解压后文件结构如图:
如果需要输出PDF格式,需要下载itext-1.3.jar支持包,
如果输出PDF要显示亚洲语言,需要下载iTextAsian.jar支持包,
从大的方面来说,有两种生成方式:
4.3.1WEB容器生成方式
(1)直接使用birt_runtime_2.1.2中的WebViewerExample
1.将其复制到%TOMCAT%\webapps目录下,并将其更改名称为birtServer;
2.如需生成PDF格式,在birtServer\WEB-INF\platform\plugins\com.lowagie.itext目录下新建文件夹lib,并将itext-1.3.jar和iTextAsian.jar拷入其中;
3.把所使用的数据库的JDBC驱动jar包复制到birtServer\WEB-INF\platform\plugins\org.eclipse.birt.report.data.oda.jdbc(后跟版本号)\drivers目录下;
4.将设计好的报表,比如test.rptdesign放到BirtServer的根目录下,然后启动TOMCAT,即可通过
http:
//localhost:
8080/birtServer/frameset?
__report=test.rptdesign(相对路径)
或者
http:
//localhost:
8080/birtServer/frameset?
__report=C:
/test.rptdesign(绝对路径)
来访问。
如果要生成pdf文件,如下:
http:
//localhost:
8080/birtServer/frameset?
__report=test.rptdesign&__format=pdf
如果报表有输入参数,只需在上述url后拼接参数及值即可,如下:
http:
//localhost:
8080/birtServer/frameset?
__report=test.rptdesign&name=whj&date=2007-6-13;
5.如果需要和现有WEB项目集成,可直接把WebViewerExample目录下所有文件及文件夹复制到现有项目的WebRoot下部署运行即可。
(2)WEB调用相关动作及运行参数说明
1.frameset使用BIRTReportViewer浏览,提供带分页显示、导出数据到csv功能、pdf打印功能的导航条,加__format=pdf参数后可生成PDF
2.run不带工具条,html显示
3.可用参数列表
参数名
参数说明
参数值
默认值
__format
指定报表输出格式
html或pdf
html
__isnull
指明一个参数是null,常用于字符串类型。
如果提供参数且值为空:
-对于日期和数字类型,BIRT会将它们当作null处理。
-对于字符串,BIRT会将它作为空字符串。
因此,为了说明某个字符串是null,通常写为:
__isnull=参数。
报表输入参数名
None.Required.
__locale
本地化选项
en-us或ch-zh
虚拟机默认
__report
指定*.rptdesign文件路径
None.Required.
报表输入参数名
报表输入参数
具体的输入参数值
在设计报表时指定
__svg
指定是否使用SVG矢量图来显示图表。
SVG矢量图形是一种XML格式的文本文件,在IE下需要安装AdodbSVGViewer插件才能浏览。
true或false
安装插件后浏览时
frameset下默认true,run下默认false;不安装插件时默认为false
(3)使用BIRT提供的ReportEngineApi来调用报表并展现报表
1.新建web项目webrpt;
2.将birt-runtime-2_1_2\ReportEngine\lib下的所有文件拷入WebRoot下的WEB-INF\lib;
3.在WEB-INF目录中新建文件夹platform,并将birt-runtime-2_1_2\ReportEngine下的plugins和configuration拷入其中;
4.如需要PDF格式及其亚洲语言支持,需将itext-1.3.jar和iTextAsian.jar拷入platform\plugins\com.lowagie.itext文件夹的lib目录中;
5.把所使用的数据库的JDBC驱动jar包复制到platform\plugins\org.eclipse.birt.report.data.oda.jdbc(后跟版本号)\drivers目录下;
6.在webrpt的WebRoot目录下新建Reports和images文件夹。
其中Reports文件夹中放置已设计完成的报表文件(*.rptdesign),把设计好的报表文件firstReport.rptdesign复制到WebRoot\Reports下;images将用来放置生成的html中包含的图片。
设置完成后目录结构如下图
1.
2.
3.
4.
5.
6.
1.
2.
3.
4.
5.
6.
7.使用ReportEngineAPI开发调用及展示报表的相关程序。
1)BirtConfig.properties–配置文件
logDirectory=d:
/temp
logLevel=FINEST
2)BirtEngine.java–用来初始化ReportEngine
packagecom.glnpu.birt;
importjava.io.InputStream;
importjava.io.IOException;
importjava.util.Properties;
importjava.util.logging.Level;
importjavax.servlet.ServletContext;
importorg.eclipse.birt.report.engine.api.EngineConfig;
importorg.eclipse.birt.report.engine.api.IReportEngine;
importorg.eclipse.birt.core.framework.PlatformServletContext;
importorg.eclipse.birt.core.framework.IPlatformContext;
importorg.eclipse.birt.core.framework.Platform;
importorg.eclipse.birt.core.exception.BirtException;
importorg.eclipse.birt.report.engine.api.IReportEngineFactory;
publicclassBirtEngine{
privatestaticIReportEnginebirtEngine=null;
privatestaticPropertiesconfigProps=newProperties();
privatefinalstaticStringconfigFile="com/glnpu/birt/BirtConfig.properties";
publicstaticsynchronizedvoidinitBirtConfig(){
loadEngineProps();
}
publicstaticsynchronizedIReportEnginegetBirtEngine(ServletContextsc){
if(birtEngine==null){
EngineConfigconfig=newEngineConfig();
if(configProps!
=null){
StringlogLevel=configProps.getProperty("logLevel");
Levellevel=Level.OFF;
if("SEVERE".equalsIgnoreCase(logLevel)){
level=Level.SEVERE;
}elseif("WARNING".equalsIgnoreCase(logLevel)){
level=Level.WARNING;
}elseif("INFO".equalsIgnoreCase(logLevel)){
level=Level.INFO;
}elseif("CONFIG".equalsIgnoreCase(logLevel)){
level=Level.CONFIG;
}elseif("FINE".equalsIgnoreCase(logLevel)){
level=Level.FINE;
}elseif("FINER".equalsIgnoreCase(logLevel)){
level=Level.FINER;
}elseif("FINEST".equalsIgnoreCase(logLevel)){
level=Level.FINEST;
}elseif("OFF".equalsIgnoreCase(logLevel)){
level=Level.OFF;
}
config.setLogConfig(configProps.getProperty("logDirectory"),level);
}
config.setEngineHome("");
IPlatformContextcontext=newPlatformServletContext(sc);
config.setPlatformContext(context);
try{
Platform.startup(config);
}catch(BirtExceptione){
e.printStackTrace();
}
IReportEngineFactoryfactory=(IReportEngineFactory)Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
birtEngine=factory.createReportEngine(config);
}
returnbirtEngine;
}
publicstaticsynchronizedvoiddestroyBirtEngine(){
if(birtEngine==null){
return;
}
birtEngine.shutdown();
Platform.shutdown();
birtEngine=null;
}
publicObjectclone()throwsCloneNotSupportedException{
thrownewCloneNotSupportedException();
}
privatestaticvoidloadEngineProps(){
try{
//ConfigFilemustbeinclasspath
ClassLoadercl=Thread.currentThread().getContextClassLoader();
InputStreamin=null;
in=cl.getResourceAsStream(configFile);
configProps.load(in)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BIRT 报表 应用 报告