根据条件格式化字段数据颜色

时间:2010-03-29 06:42:55

标签: jasper-reports

我是JasperReports的新手。我正在使用iReport设计报告。我的要求是我有两个值(字段)x,y来比较。如果x <然后,y的数据颜色应更改为“黑色”和“黑色”。如果更大,则y的数据颜色应更改为“红色”。

请告诉我如何继续这个&amp;在哪里验证。

3 个答案:

答案 0 :(得分:9)

我知道这是一个老问题,但我认为Jasper Reports已经改变了。您现在可以使用条件样式完成此操作。

在iReport中,您可以创建一个新样式并为其命名。您可以在样式中添加任何默认设置,如字体,颜色,文本大小等。然后右键单击Stlye并选择Add Conditional Style。然后在要应用它的字段上将样式设置为您创建的样式。

因此,在您的示例中,我将主要stlye中的Forecolor设置为黑色,将条件样式中的条件表达式设置为

$F{y} > $F{x}

和有条件的Stlye中的Forecolor为红色。然后在放置了y字段的详细信息部分中,将样式设置为我们创建的样式。

答案 1 :(得分:7)

在JasperForge论坛上有关于该主题的discussion,这可能是最相关的部分:

  

首先拖放您想要有两次动态颜色的字段。将第一个字段的背景颜色更改为黄色,将第二个字段更改为红色。现在右键单击黄色字段,单击属性,选择常用选项卡,然后在'打印表达式时'框中写入此代码:(确保将myconditionalfield替换为您的实际字段名称)$ F {MyConditinalField} .intValue()&gt; = 5 &安培;&安培; $ F {MyConditinalField} .intValue()&lt; 10?Boolean.TRUE:Boolean.FALSE // if&gt; = 5和&lt; 10然后显示黄色字段//红色字段代码在同一个地方就像$ F一样{MyConditinalField} .intValue()&gt; = 10?Boolean.TRUE:Boolean.FALSE希望这会有所帮助。

它不是完全你需要什么,但可能足够接近,可以推动你朝着正确的方向前进。

答案 2 :(得分:5)

为偶数行和奇数行着色的示例如下,希望有帮助

<style name="BackgroundStyle" mode="Opaque" backcolor="#FFFFFF">

    <conditionalStyle>
        <conditionExpression><![CDATA[Boolean.valueOf($V{REPORT_COUNT}.intValue() % 2 == 0)]]></conditionExpression>
        <style backcolor="#CCFFCC"/>
    </conditionalStyle>
</style>

并为每个专栏指定样式,与我合作:)