无法格式化Jasper Reports中的数字

时间:2016-03-05 18:58:14

标签: xml jasper-reports

我正在使用iReport 3.7.6设计PDF报告,使用包含一些价格(Money值)的XML数据源,在我的报告中引入了textField,因此我使用了pattern textField属性设置货币格式,但不幸的是它没有按我想要的格式化。

在这里,您可以在XML文件中看到我想要格式化为货币的值:

<importFormalitzat>1500.0</importFormalitzat>

这是textField的JRXML代码,我在其中显示值:

<textField pattern="¤ #,##0.00" isBlankWhenNull="true">
    <reportElement x="4" y="475" width="181" height="13"/>
    <textElement lineSpacing="Single">
       <font size="8"/>
    </textElement>
    <textFieldExpression class="java.lang.Double"><![CDATA[$F{importFormalitzat} ]]></textFieldExpression>
</textField>

正如您所看到的,我用来格式化值的模式是:pattern="¤ #,##0.00"

但是我在预览报告时得到的结果是:

enter image description here

我不明白为什么我得到15000,00,而我填写报告的XML文件中的值是1500.0。

我尝试将TextField表达式中的Java类更改为IntegerBigDecimal,但我仍未在报告中获得正确的值!

1 个答案:

答案 0 :(得分:1)

当您加载xml文件时,这是Locale和数字模式的问题,因此您的&#34;西班牙语&#34;小数点分隔符的区域设置为不是

您需要为xml数据源设置正确的Locale和数字模式:

在java中

/assets/images

在iReport中(数据源的定义)

The datasource

编辑:添加运行示例及其输出

XML文件

JRXmlDataSource ds = new JRXmlDataSource("theXmlFile");
ds.setLocale(Locale.US); //Example US that uses . as decimal separator
ds.setNumberPattern("###0.00;-###0.00");//Pattern of number in xml file

JRXML文件

<report>
   <persons>
        <person>
            <name>John</name>
            <value>1500.0</value>
        </person>
        <person>
            <name>Marko</name>
            <value>1700.0</value>
        </person>
    </persons>
</report>

注意:<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="TableWithList" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2347c131-1884-430a-b77f-59f08f896c8a"> <queryString language="xPath"> <![CDATA[/report/persons/person]]> </queryString> <field name="value" class="java.lang.Double"> <fieldDescription><![CDATA[value]]></fieldDescription> </field> <field name="name" class="java.lang.String"> <fieldDescription><![CDATA[name]]></fieldDescription> </field> <columnHeader> <band height="20"> <staticText> <reportElement x="0" y="0" width="100" height="20" uuid="a131c9e4-a295-460f-8d9a-d7a85f0de41a"/> <textElement verticalAlignment="Middle"> <font isBold="true"/> </textElement> <text><![CDATA[name]]></text> </staticText> <staticText> <reportElement x="100" y="0" width="100" height="20" uuid="e39eb5aa-0687-48e8-a268-193993d647e1"/> <textElement verticalAlignment="Middle"> <font isBold="true"/> </textElement> <text><![CDATA[value]]></text> </staticText> </band> </columnHeader> <detail> <band height="20" splitType="Stretch"> <textField pattern="¤ #,##0.00"> <reportElement x="100" y="0" width="100" height="20" uuid="7c293632-3735-497e-8315-72ade69125e9"/> <textElement verticalAlignment="Middle"/> <textFieldExpression class="java.lang.Double"><![CDATA[$F{value}]]></textFieldExpression> </textField> <textField> <reportElement x="0" y="0" width="100" height="20" uuid="83e733ca-8ad8-462c-b1b0-85b3c8b3e6f1"/> <textElement verticalAlignment="Middle"/> <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> </textField> </band> </detail> </jasperReport> value

的字段定义

<强>输出

Output