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参数的值