API计算报表参数类型设置
在设置报表中经常会用到各种类型的参数,直接通过标签计算当然无需设置,如果通过api计算报表,可能会遇到参数类型为字符串组等比较特殊的类型时,出现输出丢失,这是因为报表引擎在解析参数类型时,我们没有指定,默认当成了字符串来处理,所以对字符串组等类型的参数进行计算时将‘,’之前的取得了。为了解决此类问题,再通过api计算时需要设置将参数类型,报表中就可以正确接收到了。
Context cxt = new Context();
String reportFile = “c:\\Program Files\\reportHome\\webapps\\demo\\reportFiles\\argstest.raq”;
ReportDefine rd = (ReportDefine)ReportUtils.read( reportFile );
ParamMetaData pmd = rd.getParamMetaData();
String paramOrMocrName = “”;
if(pmd != null){
for(int i = 0, count = pmd.getParamCount(); i < count; i ++ ) { //讲究优化的写法
paramOrMocrName = pmd.getParam(i).getParamName(); //获取参数名
//获取模板中定义的参数的类型用getDataType()
System.out.println(pmd.getParam(i).getDataType());
cxt.setParamValue(paramOrMocrName,Types.getProperData(pmd.getParam(i).getDataType(),”10501,10502,10503″) ); //设参数值
}
}
Engine engine = new Engine(rd, cxt);
IReport iReport = engine.calc();
String htmlText = ReportUtils.toHTMLString(iReport,”report1″,request);
out.print(htmlText);
这种方法也试用于通过api计算报表中的普通参数,如果直接set参数值,就算是字符串也会报错的,所以需要先取得参数类型,在set参数的值