birt

本文分享了BIRT报表制作中的实用技巧,包括解决打印Word时的格式问题、动态设置打印方向、根据数据动态调整表格样式及分组方法。探讨了如何避免Word导出时的复杂嵌套表格,提升编辑效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**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"


转载于:https://my.oschina.net/u/1430310/blog/314637

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值