【问题标题】:Jasper Reports Date doesn't change according to the given formatJasper 报告日期不会根据给定格式更改
【发布时间】:2014-07-09 18:49:03
【问题描述】:

我正在尝试获取所需的日期格式,但 iReport 中的预览始终显示相同的格式:dd/mm/yy,而在导出到 xls 后,我在所有单元格中都得到 dd-MMM-yy。 我的 xml 看起来像

                    <jr:detailCell style="table 2_TD" height="20" rowSpan="1">
                    <textField pattern="MMMMM dd, yyyy">
                        <reportElement x="0" y="0" width="90" height="20" uuid="1a3dc360-984e-4029-af37-ffa54c84f1c3"/>
                        <textFieldExpression><![CDATA[$F{DECISION_DATE}]]></textFieldExpression>
                    </textField>
                    </jr:detailCell>

我做错了什么? 我使用 JRXlsExporter 将报告导出到 xls。 字段 DATE 类型为

<field name="DECISION_DATE" class="java.lang.String"/>

【问题讨论】:

  • 你能展示你在textField元素中的元素吗?
  • @GustavoMeira 当然,
  • 谢谢。我不是专家,但我会尝试从您那里获得更多信息,好吗?您甚至可以将此信息添加到您的问题中。字段DATE 是什么类型?包含textField 的报告是子报告吗?
  • 只是另一件事。 textFieldExpressio 的内容缺少“]”。应该类似于&lt;![CDATA[‌​$F{DATE}]]&gt;
  • 好的。我现在明白你了。您可以直接在您的textFieldExpression 中尝试new java.text.SimpleDateFormat("MMMM dd, yyyy").format(new java.text.SimpleDateFormat("mask for your time string").parse($F{DECISION_DATE})) 之类的东西,并使用pattern 属性。

标签: java jasper-reports


【解决方案1】:

查看 Jasper Reports 库提供的示例,我可以找到如下内容:

<field name="OrderDate" class="java.util.Date"/>

...

<textField isStretchWithOverflow="true" pattern="yyyy, MMM dd">
    <reportElement positionType="Float" x="54" y="2" width="87" height="10" uuid="1886b1ce-67ff-4457-89de-7baeae1446d0"/>
    <textElement textAlignment="Center"/>
    <textFieldExpression><![CDATA[$F{OrderDate}]]></textFieldExpression>
</textField>

请注意(在此示例报告中),字段OrderDate 被声明为java.util.Date 对象。所以,我相信要使pattern 属性起作用,textFieldExpression 必须包含一个java.util.Date 对象。

但是,在您的情况下(如我们的 cmets 中所述),您的字段类型是 java.lang.String。比如:

<field name="DECISION_DATE" class="java.lang.String"/>

由于textFieldpattern 属性不适用于您的DECISION_DATE 字段,解决方案可能是直接在textFieldExpression 中格式化您的字段值(字符串),使用pattern 属性.例如(基于您的代码):

<textField>
    <reportElement x="0" y="0" width="90" height="20" uuid="1a3dc360-984e-4029-af37-ffa54c84f1c3"/>
    <textFieldExpression><![CDATA[new java.text.SimpleDateFormat("MMMM dd, yyyy").format(new java.text.SimpleDateFormat("<your timestamp mask>").parse($F{DECISION_DATE}))]]></textFieldExpression>
</textField>

请注意,我放置&lt;your timestamp format&gt; 的位置应放置时间戳的掩码。当使用带有datetime 数据类型的SQLite 时,生成的字符串是“2014-05-18 01:18:18”(对于java.lang.String 字段),因此您可以使用掩码“yyyy-MM-dd HH: mm:ss",例如。

【讨论】:

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