BIRT 报表使用一个数据源连接到数据库或其它数据提供者。 BIRT 使用一个数据集从数据提供者处的检索数据。 可以将数据源理解为连接, 数据集作为query。
2、ODA:
BIRT提供ODA(Open Data Access)框架来支持自定义数据访问方法。数据访问的范围还包括一个获取数据的运行时组件。也包括构建自定义查询的自定义设计时UI。例如,打包后的应用程序可以让ODA构建数据访问UI并运行在自己的数据模型中。
3、输出文件格式
html、xls、ppt、doc、pdf、Postscript
二、Birt优势
1、有一个强大的RCP平台,RCP:Rich Client Platform. 有Eclipse支持
三、报表设计
1、报表需求内容
1)报表的目的是什么;
2)谁将使用(浏览)这个报表;
3)报表将包含哪些信息?这些信息来源于哪?
4)哪些数据需要被计算?
5)需要计算数据的算法是什么?
6)是否需要由报表使用者确定哪些数据被显示?
2、确认报表如何被浏览
1)在线浏览或者打印报表哪种更重要?
2)报表将以html、pdf或者其它支持的文件格式被浏览?
3)如果以html格式显示报表,需要支持哪些浏览器?
3、考虑报表的国际化需求
4、确认报表的布局和格式
1)报表数据的整体布局是什么?所有数据都显示在一个区域块中,或者根据需要显示在多个区域块中?
2)数据是否需要分组?需要分组的如何做?
3)数据是否需要排序?是否需要动态排序?
4)数据是否需要汇总?如何需要如何汇总?
5)在一定条件下高亮显示信息。
6)在页眉和页脚是否需要显示信息;
7)公司或者客户公司是否有标准需要遵守;
8)是否有可重用的样式模板;
9)是否有可重用的报表模板;
5、画报表的基本模型
6、考虑报表有哪些可重用的组件(业务的,如两个部门需要的报表信息基本相同,只有个别信息不同,这时相同的部分就可以重用)。
7、管理报表的设计资源:客户提供的样本数据、图等
8、确认报表如何被布署
四、二次开发
1、样式
1)修改静态文本背景色
LabelHandle headerLabel =
( LabelHandle ) design.findElement( "Header Label" );
try {
// To prepare to change a style. property, get a StyleHandle.
StyleHandle labelStyle. = headerLabel.getPrivateStyle();
// Update the background color.
ColorHandle bgColor = labelStyle.getBackgroundColor();
bgColor.setRGB( 0xFF8888 );
} catch ( Exception e ) {
// Handle the exception
}
2)修改静态文本对齐方式
labelStyle. .setTextAlign("center");
2、驱动加载
1)将所需驱动复制到runtime_home/plugins\org.eclipse.birt.report.data.oda.jdbc_2.3.1.v20080827\drivers目录下,详见readme.txt
2)
IReportRunnable design = birtReportEngine.openReportDesign(sc
.getRealPath("/Reports")
+ "/" + reportName);
ReportDesignHandle report = (ReportDesignHandle) design
.getDesignHandle();
ElementFactory designFactory = report .getElementFactory();
OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
"Data Source", "org.eclipse.birt.report.data.oda.jdbc");
dsHandle.setProperty("odaDriverClass", "com.mysql.jdbc.Driver");
dsHandle.setProperty("odaURL", "jdbc:mysql://localhost:3306/birt");
dsHandle.setProperty("odaUser", "root");
dsHandle.setProperty("odaPassword", "root");
designHandle.getDataSources().add(dsHandle);
3)注意:自定义sql时如果多表情况下,指定的字段如果带字段别名,在手工建立table时需要将别名去掉,如od.name改为name,sum(quantity) quantity改为quantity
3、表或网格布局与类的对应
表 --->行 --->单元格
TableHandle --->RowHandle --->CellHandle
注意,handle类的实例只是获取一个句柄,对于表layout的操作需要获取相对应的类实例。
4、参数
1)API获取参数值
ReportDesignHandle designHandle = null;
....
ScalarParameterHandle parameterHandle = ( ScalarParameterHandle )designHandle.findParameter("determineNull");
System.out.println("默认值为空值===========" + parameterHandle.getDefaultValue());
5、脚本
1)获取参数时写法
var beginDte = params["beginDte"].value;
注意:红色的.value,一定要有,如果没有是params["beginDte"]形式时,并且此参数的默认值是null,那么beginDte的值不为null,即beginDte==null为false;只有加上.value时,当为默认值时,beginDte的值才为null,即beginDte==null为true。
kao!浪费我3个小时啊!--教训,还得看官方文档,网友的文档还是不严谨!
表达式:
如果数据类型设置为字符串,那么赋值时也应是字符,0及数字最明显,应是"0"
例:
amtRadio = row["AMTRADIO"];
if(amtRadio == "-"){
amtRadio = "0";//如果amtRadio=0则有时报错,此种写法,做了5个有1个报错,不严谨啊。
}
6、在用API开发动态报表时,oracle字段必须大写
在访问oracle数据库时,如果组成的sql语句字段名字小写,那么在生成的.rptdesign文件中,数据集的字段被改为大写,导致行数据不能绑定。从目前看字段名字必须是大写的。mysql5中不会出现此情况。
7、数据源
1)jdbc数据源
配置详细驱动信息后,如果同时配置jndi,那么在运行环境时,如果jndi可用,则优先使用jndi.注意:tomcat与weblogic的jndi写法是不同的,如jndi名字为:lic,那么weblogic则为lic,而tomcat为:java:comp/env/lic
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/118838/viewspace-551854/ ,如需转载,请注明出处,否则将追究法律责任。