birt

原创
2014/09/17 12:05
阅读数 296

**1.**birt报告打印word时,cell中嵌入的grid的border显示不全或明显grid出界


    由于系统birt升级造成报表格式问题,一般是cell中的grid出界问题和border显示不全 解决方案:将cell内容居中和grid居中


**2**.birt中可以引用js


    <list-property name=”includeScripts”>

      <property>js/test.js</property>

    </list-propterty>

**3**.Birt报表表格列动态隐藏显示


在使用birt时,想根据动态值去动态隐藏一列数据时,应注意几个方面: Birt列的动态隐藏和显示的原理:birt会在整个表格绘制完成以后,在去执行动态隐藏显示列的脚本(script),即便使用分组或过滤等条件,界面上看似多个表格,其实birt内部认为这是一张表格,导致最终所有表格以最后判断动态隐藏列的脚本为准。 解决方案:使用主从关系,让需要动态隐藏的表格重新绘制,达到动态隐藏和显示表格列 参考:(环境报告中的废水,公卫报告的实现)


**4.**birt报表中,如何根据某个数据动态设置报告的纵向和横向打印


    首先获取报告的Master Page的Element Id,譬如,下段是某报告的XML Source中的一段,Master Page的element id就是"2":


    <page-setup>

            <simple-master-page name="Simple MasterPage" id="2">

                <property name="type">a4</property>

                <property name="orientation">auto</property>

                <property name="leftMargin">0.25in</property>

                <property name="rightMargin">0.25in</property>

                <property name="showHeaderOnFirst">true</property>

                <property name="showFooterOnLast">true</property>

                ......

    </page-setup>

    然后在报告(Report Design)的beforeFactory方法内,动态设置Master Page的orientation值:


    if (industryDomain !=null && "DOMAIN_IHT" == industryDomain) {

        reportContext.getDesignHandle().getElementByID(2).orientation = "Landscape";

    } else {

        reportContext.getDesignHandle().getElementByID(2).orientation = "Portrait";

    }

**5**.birt报告中,如何根据数据动态设置表格控件的属性


    譬如下段代码,是绝对浓度报告中根据是否为空白样给该条记录的样品编号添加斜体样式:


    if("Y" == this.getRowData().getExpressionValue("row[isSampleBlank]")) {

        this.getStyle().fontStyle = "Italic";

    }

**6**.Birt报告脚本中,如何按照多个字段进行分组(或者过滤).


    譬如,想按照row["a"]和row["b"]进行分组(或进行排序),需要在birt中设置分组条件”表达式“(expression,注意,该表达式是javascript表达式,而不是SQL)。 以下SQL类似的写法是错误的:


row["a"], row["b"] // 这是错误的!

。该写法作为javascript expression执行的结果,实际就只包含row["b"]。 正确的写法是:


row["a"] + "\n" + row["b"] // 这是正确的

。其中"\n"是连接符,可以取绝对不会在row["a"]和row["b"]中出现的任意字符。一般可以取"\n"和"\t"等。也可以使用javascript array的join方法:


[row["a"], row["b"]].join("\n") // 这个也是正确的

使用动态文本字段的注意事项


注意:文本类型是html的动态文本字段,在Word导出中会以一个单独的表格进行处理。过多的这类动态文本字段,使得导出的Word中表格嵌套表格,导致后续编辑困难和导出文件过大。


如果是不需要换行的内容,请尽量不要使用动态文本字段

如果必须使用动态文本字段,请尽量设置文本类型为"plain text"


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部