我正在尝试获取我需要的日期格式,但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"/>
答案 0 :(得分: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
个对象。
但是,在您的情况下(如我们的评论中所述),您的字段类型为java.lang.String
。类似的东西:
<field name="DECISION_DATE" class="java.lang.String"/>
由于textField
的{{1}}属性不适用于您的pattern
字段,解决方案可能是直接在{{1}中格式化您的字段值(字符串) },加入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>
数据类型的SQLite时,生成的字符串为“2014-05-18 01:18:18”(对于<your timestamp format>
字段),因此您可以使用掩码“yyyy-MM” -dd HH:mm:ss“,例如。