皕杰报表brf文件(报表对象)的使用

后缀为.brt的文件,我们称之为“报表对象文件”,这个文件里包括了报表样式和数据,访问.brf文件,不需要再访问数据库进行数据查询。

.brf文件的生成

    生成.brf文件需要调用皕杰报表的api接口,通过bios.report.api.BiosReportManager类的toBrf方法,获得brf文件。具体的API说明,可以参考开发文档中的JAVADOC\API,具体的代码实现例如:

    //从输入流创建报表模板对象

FileInputStream in = new FileInputStream(“D:\\brt\\fenzu.brt”);

BiosReportTemplate template = new BiosReportTemplate(in);

in.close();

//设置参数和变量

Map params = new HashMap();

String[] paramNames = template.getParamNames();

for (int i = 0; i < paramNames.length; i++) {

params.put(paramNames[i], “”); //用户自行获取参数值

}

Map vars = new HashMap();

String[] varNames = template.getVarNames();

for (int i = 0; i < varNames.length; i++) {

vars.put(varNames[i], “”); //用户自行获取变量值

}

//创建报表运算对象

BiosReportManager manager = new BiosReportManager(template, params, vars);

//调用运算方法

manager.calc();

//保存计算完成的报表对象

out = new FileOutputStream(“D:\\tmp_output\\test.brf”);

manager.toBrf(out);

out.close();

.brf文件的访问

第一步:自定义实现类。

.brf文件不能向brt文件那样直接访问,需要实现用户工厂(bios.report.engine.api.IUserFactory)接口的loadBrf方法。具体的API说明参考JAVADOC\FACTORY。具体的代码实现例如:

//自定义实现类,实现bios.report.engine.api.IUserFactory接口

public class DemoFactory implements IUserFactory {

…….

//实现loadBrf方法

public InputStream loadBrf(String arg0, boolean arg1) {

FileInputStream in = new FileInputStream(arg0);

return in;

}

……

}

第二步:配置config.xlm文件。

在config.xml文件里配置<userFactory>节点,具体的配置方式是,将上一步编译好的实现类的全路径写到<userFactory></userFactory>节点,如<userFactory>com.bios.report.factory.DemoFactory </userFactory>

第三步:访问.brf文件

在访问.brf文件的时候,无论是Servlet方式访问,还是通过taglib标签的方式访问,都需要添加一个参数brf=true,例如:

Servlet方式:http://localhost:8080/report/ReportEmitter?rpt=D:/tmp_output/test.brf&brf=true。

标签方式:<bios:report rpt=”<%=rpt%>” params=”<%=params%>” brf=”true”……/>