So I am running into issues with JasperReports pattern field. I have created a cross tab and I need all $F{ScoreMeasure}
to have two decimal places and appended with a "%" sign. So for example a cell for the $F{ScoreMeasure}
in the crosstab should show 25.42%.
The issue I have come across is I appended the "%" sign by adding it to the text field expression:$V{ScoreMeasure}+"%"
. This works fine with whole numbers.
When I try add the two decimal places by adding the pattern #,##0.00
and run the report I get some fields have two decimals and others have multiple (up to 8).
If I drop the appended text (+"%") from the text field expression I get the right format. But I cant work out how to get the two?
Here's an extract of when it is working without the "%" appended:
<crosstabCell width="73" height="25" rowTotalGroup="Name">
<cellContents backcolor="#005FB3" mode="Opaque">
<box>
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField pattern="#,##0.00">
<reportElement style="Crosstab Data Text" x="0" y="0" width="73" height="25" forecolor="#FFFFFF" uuid="50401fd4-b9b1-4bf2-bd74-9a0f083e77ff"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial"/>
</textElement>
<textFieldExpression><![CDATA[$V{ScoreMeasure}
]]></textFieldExpression>
</textField>
</cellContents>
And here it is appended with the text which is breaking the format:
<crosstabCell width="73" height="25" rowTotalGroup="Name">
<cellContents backcolor="#005FB3" mode="Opaque">
<box>
<pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField pattern="#,##0.00">
<reportElement style="Crosstab Data Text" x="0" y="0" width="73" height="25" forecolor="#FFFFFF" uuid="50401fd4-b9b1-4bf2-bd74-9a0f083e77ff"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial"/>
</textElement>
<textFieldExpression><![CDATA[$V{ScoreMeasure}+"%"
]]></textFieldExpression>
</textField>
</cellContents>
Anyone come across this? Any suggestions on how to fix?
Okay so the solution was in the pattern I selected "Custom Format" I then added the pattern for two decimal places ###0.00 and tried appending it with the % sign. So my custom pattern looked like ###0.00%;-###0.00%
.
But when this is run it multiplied the figure bu 100. It turns out "The presence of the percentage character in the pattern causes the value to be multiplied by 100 before being formatted."
So in order to avoid this you add quotes around the % sign. So your final pattern looks like this: ###0.00'%';-###0.00'%'
When run you will then get your two decimal place with the % sign