【问题标题】:Having trouble format decimal point in Excel with JasperReport使用 JasperReport 在 Excel 中格式化小数点时遇到问题
【发布时间】:2012-01-30 09:15:45
【问题描述】:

我做了一个excel报告,其中包含一些Double类型TextFields和数字格式模式##0.#

在 OpenOffice 中,这些单元格的格式正确(这正是我所需要的)

  • 1.56 -> 1.6
  • 0.0 -> 0

但是,当我用 Microsoft Excel 打开报表时,小数点并没有像我预期的那样消失。

  • 1.56 -> 1.6
  • 0.0 -> 0.

经过一番搜索,我发现了一篇关于 Excel 中数字格式的帖子。

In Excel format number with optional decimal places

我按照帖子的建议尝试了[=0]0;.#。但是 Excel 抱怨我的单元格编号格式被破坏了。

我的问题是:我应该在 JasperReport 中使用什么模式,以便 Excel 不会显示尾随小数点?

更新:我只是发现链接中描述的模式并不能解决所有情况,它只匹配 0,而不是 1.0、2.0...等。

【问题讨论】:

  • 您在 Excel 中找到正确的格式了吗?
  • 不,我什至无法在 Excel 中制作我想要的数字格式,似乎 Excel 不支持这样的格式?
  • 您使用的是什么 Excel(版本)?

标签: excel jasper-reports


【解决方案1】:

您可以尝试使用 net.sf.jasperreports.export.xls.formula 属性。

样本:

<textField pattern="##0.#">
    <reportElement x="0" y="0" width="100" height="20">
        <property name="net.sf.jasperreports.export.xls.formula" value="[=0]0;##0,#"/>
    </reportElement>
    <textElement/>
    <textFieldExpression><![CDATA[$F{sum}]]></textFieldExpression>
</textField>

在我的情况下,逗号 (,) 在我的操作系统中是分隔符。

关于net.sf.jasperreports.export.xls.formula属性的信息你可以找到here

【讨论】:

  • 感谢您提供的信息。但是,我只是注意到我的链接中描述的模式[=0]0;##0.# 并不能解决所有情况,它只匹配 0,而不是 1.0、2.0...等
【解决方案2】:

作为解决方法,您可以在字段中粘贴此代码:

new DecimalFormat("0.##").format($F{bigdecValue})

因此,如果尾随零,xls 的处理将不使用逗号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2017-08-25
    相关资源
    最近更新 更多