【问题标题】:Unable to format number in Jasper Reports无法在 Jasper 报告中格式化数字
【发布时间】:2020-03-02 22:56:37
【问题描述】:

我正在使用 iReport 3.7.6 设计 PDF 报告,使用包含一些价格(货币价值)的 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"

但是我预览报告时得到的结果是:15000,00

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

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

【问题讨论】:

  • 你使用什么数据源?
  • 一个包含以下值的 XML 文件:16/Y/2154721500.0Conjunta0 01250.19
  • 不,我是在问你是从 java (JRXmlDataSource) 还是在 jasper 报告中使用它...但我决定同时回答...

标签: xml jasper-reports


【解决方案1】:

这是加载 xml 文件时Locale 和数字模式的问题,因此对于“西班牙语”区域设置,小数分隔符是 而不是

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

在java中

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

在 iReport 中(数据源的定义)

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

XML 文件

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

JRXML 文件

<?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>

注意:valueclass="java.lang.Double" 的字段定义

输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多