您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 开源报表_BIRT_开发_手册_2
Birt 报表开发手册第1页共44页4Birt报表script在使用Eclipse工作台开发BIRT报表时,您可以使用Java或JavaScript编写定制事件处理程序。在使用EclipseECP(EclipseCORBAPlugin(ECP)提供一个可针对CORBAIDL文件语法进行着色的编辑器)开发BIRT报表时,只能编写JavaScript事件处理程序。无论是使用Java还是JavaScript,可以编写的事件处理程序集合是相同的。可以使用Java来编写一些事件处理程序并使用JavaScript来编写另一些事件处理程序。如果同一个事件同时有Java和JavaScript事件处理程序,则BIRT将使用JavaScript处理程序。4.1avascript脚本编写 4.1.1 隔行高亮度显示 1. 在布局(Layout)中,选择 Table-Detail 的行。如下图:2.然后选择Script,打开脚本窗口顶部的方法列表并选择onPrepare,如图所示。varcount=0;Birt 报表开发手册第2页共44页3.最后打开脚本窗口顶部的方法列表并选择 onCreate,如图所示:count++; if (count % 2 != 0) { style.setBackgroundColor(silver); } 4. 保存,点击 Preview预览结果如下图。Birt 报表开发手册第3页共44页 4.1.2 多参数查询在多参数查询时,根据输入的参数不同,查询出不同的结果集,这就需要对查询sql语言进行拼凑。在birt环境下这种拼凑可以在dataset的script编辑框中完成。前端包含在标签中的查询参数提交上来后,通过params[parameterName]即可引用。1.首先,按照3.3创建数据集的步骤创建数据集。Sql2.创建报表参数,sql需要的条件参数。如下图:3.点击DataSet(创建的数据集),然后点击编辑区的Script出现脚本编辑器。打开脚本窗口顶部的方法列表并选择brferOpern如下图:if(!params[name].equals() || !params[city].equals()) this.queryText = this.queryText+ where ; if(params[name]!=null && !params[name].equals()) this.queryText = this.queryText+ CUSTOMER_NAME like '%+params[name]+%'; if(!params[city].equals()) this.queryText = this.queryText+ and city ='+params[city]+';Birt 报表开发手册第4页共44页说明:this.queryText获取之前创建的没有参数的sql语句。4.保存,点击编辑区的Preview预览。会弹出输入参数的对话框。如下图:5.点击ok,就在预览窗口看到根据条件查询结果。如下图:Birt 报表开发手册第5页共44页 4.1.3 脚本创建数据源通过脚本从properties配置文件取得jdbc数据源信息。1.在已创建的jdbc数据源的基础编写脚本。2.选择数据资源管理器(DataExplorer)-DataSource(创建的数据源),如下图:3.点击编辑区的Script脚本编辑器,打开脚本窗口顶部的方法列表并选择brferOpern如下图:Birt 报表开发手册第6页共44页由于在这里的代码只支持绝对路径,在服务器部署的情况下可能不太适用,可以修改一下支持相对路径,相对于你发布的应用/WEB-INF/目录。如下:importPackage( Packages.java.io ); importPackage( Packages.java.util ); fin = new java.io.FileInputStream( new String(c:/temp/report.properties) ); if(fin!=null){ props = new java.util.Properties( ); props.load(fin); } extensionProperties.odaURL = new String(props.getProperty(dbURL)); extensionProperties.odaDriverClass = new String(props.getProperty(driverName)); extensionProperties.odaUser = new String(props.getProperty(userName)); extensionProperties.odaPassword = new String(props.getProperty(password)); if(fin!=null) fin.close();Birt 报表开发手册第7页共44页4.2java脚本编写由于不是简单地在BIRT报表设计器中直接输入Java代码,所以与创建JavaScript事件处理程序相比,Java事件处理程序的创建工作略为复杂。要创建Java事件处理程序类,必须编译Java类的源代码并确保该类对BIRT可视。但是,由于Eclipse是健壮的Java开发环境并支持将Java项目与BIRT项目集成,所以,为BIRT创建Java事件处理程序的过程已大为简化。 4.2.1 创建 java类1.创建java工程或者报表web工程。如果创建报表web工程,可以将报表创建在web目录下,方便测试。l选择File-New-WebProject,在窗口Configuretions下拉菜单选择BIRTReportingWebProject。如图:importPackage( Packages.java.io,Packages.java.util,Packages.java .net ); importPackage( Packages.javax.servlet.http ); req = reportContext.getHttpServletRequest( ); propPath = new String(params[propFile]); if ( propPath.charAt(0) != / ) propPath = /WEBINF/ + propPath; url= req.getSession().getServletContext().getResource( propPath ); props = new java.util.Properties( ); props.load( url.openStream( ) ); extensionProperties.odaURL = new String(props.getProperty(dbURL)); extensionProperties.odaDriverClass = new String(props.getProperty(driverName)); extensionProperties.odaUser = new String(props.getProperty(userName)); extensionProperties.odaPassword = new String(props.getProperty(password));Birt 报表开发手册第8页共44页l点击Finish,完成报表工程创建。如图:2.编写java类Birt 报表开发手册第9页共44页在工程src目录下创建类。如图:l创建Employee类,职工信息类。Birt 报表开发手册第10页共44页l创建DataFactory类,数据集合类。package test; public class Employee { private String id = ; private String name=; private String sex=; private String address =; public void setId(String id){ this.id = id; } public String getId(){ return this.id; } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setSex(String sex){ this.sex = sex; } public String getSex(){ return this.sex; } public void setAddress(String address){ this.address = address; } public String getAddress(){ return this.address; } }Birt 报表开发手册第11页共44页package test; import java.util.ArrayList; import java.util.List; public class DataFactory { /** *定制数据集合,这里也可以从数据库获取* @return */ public static List getData(){ Employee emp1 = new Employee(); emp1.setId(00501); emp1.setName(张三); emp1.setSex(男); emp1.setAddress(西安); Employee emp2 = new Employee(); emp2.setId(00502); emp2.setName(李四); emp2.setSex(男); emp2.setAddress(北京); Employee emp3 = new Employee(); emp3.setId(00503); emp3.setName(王五); emp3.setSex(男); emp3.setAddress(深圳); List list = new ArrayList(); list.add(emp1); list.add(emp2); list.add(emp3); return list; } }Birt 报表开发手册第12页共44页 4.2.2 java类与报表交互1.创建报表。在前面已经讲过怎么创建报表,在这里只要选择报表存放目录为工程的WebContent。如图:2.在报表文件中新建一个脚本数据源。如下图:Birt 报表开发手册第13页共44页点击Finish,完成脚本数据源的创建。3.创建一个数据集。1)数据类型,如下图:Birt 报表开发手册第14页共44页2)点击Next,为数据集定制输出列。如下图:点击Finish,完成数据的创建。如下图:4.java类与报表交互选择DataSet(创建的数据集),在报表设计视图点击Script选项卡进入脚本编辑界面。Birt 报表开发手册第15页共44页l打开Script脚本窗口顶部的方法列表并选择open方法,输入下列代码。l打开Script脚本窗口顶部的方法列表并选择fetch方法,输入下列代码。if(iterator.hasNext() == false ){ return false; } var emp = iterator.next(); row[1] = emp.getId(); row[2] = emp.getName(); row[3] = emp.getSex(); row[4] = emp.getAddress(); return true; importPackage(
本文标题:开源报表_BIRT_开发_手册_2
链接地址:https://www.777doc.com/doc-1682 .html