贾斯珀iReport自定义date和自定义时间

在Excel中,我有一个date格式yyyy.MM.dd hh:mm和时间格式hh:mm。 我将其设置为iReport数据库的来源。

在iReport中设置自定义date格式的date与Excel中相同。 然后我设置class =“java.util.Date”

那时候,我应该select哪一个class? 我尝试了很多,没有工作。

我认为,问题是,我不能设置另一个自定义date格式,所以iReport不能识别它。

感谢您的帮助。

在JasperReports / iReport的Excel数据源中描述的新案例比解决这个新案例要困难得多:无法获得类“java.sql.Date” post的字段'Date'的值 。

数据源,数据

xls文件( flights.xls )包含这样的数据:

在这里输入图像说明

出发”和“ 持续时间”列中的单元格具有文本格式(没有任何模式)。

数据源,configuration

Excel数据源具有configuration(在iReport中 ,您可以对Java代码执行相同的操作):

在这里输入图像说明

date格式设置为yyyy.MM.dd HH:mm用于从Excel文件的“ 离开”列中读取数据。

不可能为包含不同模式的Date数据的Excel数据源声明java.util.Date几个字段。
此行为由实现net.sf.jasperreports.engine.data.JRXlsDataSource.getFieldValue(JRField)方法确定。 你可以看到这个类的源代码,你可以改变这个行为。

模板

报告中的字段将是:

 <field name="Flight" class="java.lang.String"/> <field name="Departure" class="java.util.Date"/> <field name="Duration" class="java.lang.String"/> 

请注意, 持续时间字段具有java.lang.Stringtypes。

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="flights" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="827d6b81-9342-48fd-88b5-f9ea2cfd8bfb"> <queryString> <![CDATA[]]> </queryString> <field name="Flight" class="java.lang.String"/> <field name="Departure" class="java.util.Date"/> <field name="Duration" class="java.lang.String"/> <columnHeader> <band height="20" splitType="Stretch"> <staticText> <reportElement uuid="ccfc5f9d-0b0f-4127-be62-3c3eefc16c5e" mode="Opaque" x="273" y="0" width="100" height="20" backcolor="#999999"/> <box leftPadding="10"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement textAlignment="Center" verticalAlignment="Middle" markup="none"> <font isBold="true" isItalic="true" isUnderline="false"/> </textElement> <text><![CDATA[Duration]]></text> </staticText> <staticText> <reportElement uuid="5f7a483c-2c9b-456e-8d6e-3063534c1710" mode="Opaque" x="0" y="0" width="173" height="20" backcolor="#999999"/> <box leftPadding="10"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement textAlignment="Center" verticalAlignment="Middle" markup="none"> <font isBold="true" isItalic="true" isUnderline="false"/> </textElement> <text><![CDATA[Flight]]></text> </staticText> <staticText> <reportElement uuid="45724e54-4a70-48b1-980e-acbba6266670" mode="Opaque" x="173" y="0" width="100" height="20" backcolor="#999999"/> <box leftPadding="10"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement textAlignment="Center" verticalAlignment="Middle" markup="none"> <font isBold="true" isItalic="true" isUnderline="false"/> </textElement> <text><![CDATA[Departure]]></text> </staticText> </band> </columnHeader> <detail> <band height="20" splitType="Stretch"> <textField> <reportElement uuid="a45c9487-3521-4440-8c4d-c016023dc799" x="0" y="0" width="173" height="20"/> <box leftPadding="10"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{Flight}]]></textFieldExpression> </textField> <textField pattern="dd/MM/yyyy HH:mm"> <reportElement uuid="ad60f65d-72ba-48d3-bf3e-0d4275edabb4" x="173" y="0" width="100" height="20"/> <box leftPadding="10"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{Departure}]]></textFieldExpression> </textField> <textField isBlankWhenNull="false"> <reportElement uuid="b20e0e58-feab-47f9-9ce8-63d89425e914" x="273" y="0" width="100" height="20"/> <box leftPadding="10"> <topPen lineWidth="0.25"/> <leftPen lineWidth="0.25"/> <bottomPen lineWidth="0.25"/> <rightPen lineWidth="0.25"/> </box> <textElement/> <textFieldExpression><![CDATA[$F{Duration}]]></textFieldExpression> </textField> </band> </detail> </jasperReport> 

输出结果

结果将是(通过在iReport预览):

在这里输入图像说明

备注

  • 我已经使用了iReport 5.1.0
  • 您可以使用java.text .DateFormat.format(Date date)方法更改Duration字段的格式。 你可以在mysql datetime格式的例子中使用java for JasperReports生成 post。
  • 数据源中定义的格式仅适用于“ 离开”字段。