当前位置: 首页 > 知识库问答 >
问题:

无法在Jasper报表中格式化数字

伯建安
2023-03-14
<importFormalitzat>1500.0</importFormalitzat>
<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>

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

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

共有1个答案

路金鑫
2023-03-14

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

您需要为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

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

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>
 类似资料:
  • 我有一个带有一些数值的字符串。 然而,这两者都给出了错误。 实现这种格式的正确途径是什么? 这是jasper report jrxml的一部分,我希望在这里避免报告上出现“null”,从而插入以下代码: 如何解决这一问题? 多谢阅读。

  • 我在Jaspersoft Studio 6.11.0+Java lib net.sf.JasperReports 6.11.0上遇到了一个奇怪的问题 我正在测试一个简单的报告,从Studio生成的报告很好,但是从Java生成的报告就不行了。 这是从Jaspersoft Studio生成的 在Java代码中,Pojo实例被数据填充,用Jackson封送,用JRXmlUtils解析成org.w3c.d

  • 我有以下Jasper Report subreport.jrxml文件,它产生了非常奇怪的结果。 返回的每一行数据在报表上被神秘地拆分为两个单独的行。具体地说,location_name中的最后一个字符出现在新行上(除非数据中有逗号,在这种情况下,新行从那里开始)。为什么会这样? 除了解决方案之外,有没有人有一个如何在Jasper报告中加粗文本的示例?

  • 我们有一个内部的遗留java库,可以用jasper spring生成报告,并将它们导出为html、pdf或xls。然而,excel文件的所有单元格都具有相同的格式(没有),我们有一个报告,其中一列填充了文本,有人担心它会被解释为带有数值的公式或其他类型的代码。同样,我们有应该出现在报告中的带有前导零的字符串。我试过设置JExcelApiExporterParameter。通过jasperExpor

  • 问题内容: 我有一个查询,它从表中返回金额: 这将返回如下金额: 我在碧玉报告中使用了上述金额。 但是,我希望报告中的输出显示为: JRXML代码段是: 我知道我必须使用模式。但是,我无法使其工作。 使用 不管用。 我想念什么?? 谢谢阅读! 问题答案: 你很亲密 应该管用。 您需要使用“¤”字符将其设置为“货币”格式。 如果您下载的iReports版本号与您的服务器相匹配,则会发现您的选择。

  • 我有一个Java的DTO对象设计如下: 我给Jasper的DTO产品是这样的: 使用Jaspersoft Studio,我可以轻松显示字段名称,但我找不到显示客户端列表的方法。 我尝试使用调色板中可用的元素List,但它需要一个数据集。好了,我创建了一个clientDataset。但是,我如何向clientDataset提供客户端列表?