我正在使用Jasper Report 4.5.1,我有一个交叉表报告,我需要根据单元格中的值更改背景颜色,但我能够更改前景色而不是背景色
以下工作正常
<style name="Crosstab Data Text">
<conditionalStyle>
<conditionExpression><![CDATA[$F{value}.doubleValue()==1.0d]]></conditionExpression>
<style forecolor="#66FF66"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{value}.doubleValue()>0.5d && $F{value}.doubleValue()=<1.0d]]></conditionExpression>
<style forecolor="#66FF66"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{value}.doubleValue()>0.0d && $F{value}.doubleValue()<0.5d]]></conditionExpression>
<style forecolor="#FFFF33"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{value}.doubleValue()>-0.5d && $F{value}.doubleValue()<0.0d]]></conditionExpression>
<style forecolor="#FF9933"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{value}.doubleValue()>=-1.0d && $F{value}.doubleValue()<-0.5d]]></conditionExpression>
<style forecolor="#FF0000"/>
</conditionalStyle>
</style>
但是,当我尝试以下操作时,它不起作用
<style name="Crosstab Data Text" hAlign="Center">
<conditionalStyle>
<conditionExpression><![CDATA[$V{value}.doubleValue()>0.5d && $V{value}.doubleValue()<1.0d]]></conditionExpression>
<style mode="Opaque" backcolor="#00FF00" fill="Solid"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$V{value}.doubleValue()>0.0d && $V{value}.doubleValue()<0.5d]]></conditionExpression>
<style mode="Opaque" backcolor="#0000FF" fill="Solid"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$V{value}.doubleValue()>-0.5d && $V{value}.doubleValue()<0.0d]]></conditionExpression>
<style mode="Opaque" backcolor="#FF00FF" fill="Solid"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$V{value}.doubleValue()>=-1.0d && $V{value}.doubleValue()<-0.5d]]></conditionExpression>
<style mode="Opaque" backcolor="#FF0000" fill="Solid"/>
</conditionalStyle>
</style>
我尝试使用'backcolor =“#FF0000”fill =“Solid”'或'mode =“不透明”backcolor =“#FF0000”'仍然无法正常工作......不确定此功能是否不受支持..或者我做错了什么?
这里问了类似的问题 Change text field data color (Foreground color) based on condition in JasperReports
<crosstabCell width="58" height="26">
<cellContents>
<textField pattern="#0.##" isBlankWhenNull="true">
<reportElement style="Crosstab Data Text" mode="Transparent" x="0" y="0" width="58" height="26"/>
<textElement verticalAlignment="Middle">
<font fontName="Calibri" size="9"/>
</textElement>
<textFieldExpression><![CDATA[$V{value}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<crosstabCell height="25" rowTotalGroup="text1">
<cellContents backcolor="#FFBFBF" mode="Opaque">
<textField>
<reportElement style="Crosstab Data Text" x="0" y="0" width="50" height="25"/>
<textElement/>
<textFieldExpression><![CDATA[$V{value}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<crosstabCell width="50" columnTotalGroup="text2">
<cellContents backcolor="#FFBFBF" mode="Opaque">
<textField>
<reportElement style="Crosstab Data Text" x="0" y="0" width="50" height="25"/>
<textElement/>
<textFieldExpression><![CDATA[$V{value}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<crosstabCell rowTotalGroup="text1" columnTotalGroup="text2">
<cellContents backcolor="#FFBFBF" mode="Opaque">
<textField>
<reportElement style="Crosstab Data Text" x="0" y="0" width="50" height="25"/>
<textElement/>
<textFieldExpression><![CDATA[$V{value}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
</crosstab>
答案 0 :(得分:2)
发现问题已更改
<reportElement style="Crosstab Data Text" mode="Transparent" x="0" y="0" width="58" height="26"/>
到
<reportElement style="Crosstab Data Text" x="0" y="0" width="58" height="26"/>
它运作良好
答案 1 :(得分:1)
我认为问题在于条件的顺序,风格中的所有条件应该按照我的风格顺序我首先检查收入&gt;然后> 100> 75,&gt; 25和&gt; 0,在这种情况下,如果第一个条件为真,那么它将不会进入下一个条件,如果第一个条件不为真,那么它将进入第二个条件,依此类推。
只需检查您的风格中的条件顺序。
<style name="s_total_revenue">
<conditionalStyle>
<conditionExpression><![CDATA[($F{ACT_REVENUE}/$F{TARGET_REVENUE})*100 >100]]></conditionExpression>
<style mode="Opaque" forecolor="#FFFFFF" backcolor="#006633" fill="Solid"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[($F{ACT_REVENUE}/$F{TARGET_REVENUE})*100 > 75]]></conditionExpression>
<style mode="Transparent" forecolor="#000000" backcolor="#00FF33" fill="Solid"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[($F{ACT_REVENUE}/$F{TARGET_REVENUE})*100 > 25]]></conditionExpression>
<style mode="Opaque" forecolor="#FFFFFF" backcolor="#FFFF00" fill="Solid"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[($F{ACT_REVENUE}/$F{TARGET_REVENUE})*100 >0]]></conditionExpression>
<style mode="Opaque" forecolor="#FFFFFF" backcolor="#990000" fill="Solid"/>
</conditionalStyle>
</style>