2013-08-15 1 views
1

Je l'ai utilisé un Excel comme source de données pour le rapport avec la construction iReport. Le fichier xls contient les dates aaaa-MM-jj.Excel dans la source de données JasperReports/iReport: Impossible d'obtenir la valeur pour le champ « Date » de fichier classe « java.sql.Date »

J'ai mis la classe de champ Date à java.sql.Date et je clique sur Aperçu dans iReport. Il y a une erreur: Unable to get value for field 'Date' of class 'java.sql.Date'.

J'ai essayé avec java.util.Date aussi. As tu des idées?

+0

double possible de http://stackoverflow.com/questions/18251648/excel-ireport-date-type# comment26763715_18251648. – pnuts

+0

Essayez (dans Excel) de changer votre cellule de temps (disons A1 au format aaaa-mm-jj) pour dire A2 où elle contient = TEXT (A1, "aaaa-mm-jj"). – pnuts

+1

Oui, c'est peut-être un doublon, mais il n'y a pas de réponse qui fonctionne. Aussi ne peut pas trouver une solution sur Google. – Daniel

Répondre

3

C'est assez simple.

J'ai xls fichier (de birhdays.xls) comme ceci:

enter image description here

La définition de source de données (en iReport) est:

enter image description here

Comme vous pouvez le voir sur l'image ci-dessus j'ai mis yyyy-MM-dd format pour le champ de date dans DS définition.

Le fichier de définition de champ de date dans jrxml:

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

Le fichier jrxml complet:

<?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="excel_ds" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="b0f82d57-325b-4c30-b635-f464851e0a47"> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <field name="Name" class="java.lang.String"/> 
    <field name="Birthday" class="java.util.Date"/> 
    <columnHeader> 
     <band height="20" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="cd75f6d9-1781-4938-bf24-178b6663bcd1" x="0" y="0" width="147" height="20"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Name]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="5d4c21f1-9afd-40c7-ade0-6fcc0b3d8373" x="147" y="0" width="100" height="20"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle"> 
        <font isBold="true" isItalic="true"/> 
       </textElement> 
       <text><![CDATA[Birthday]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement uuid="82f5a338-ef5d-4838-8cd0-c2544af3a73d" x="0" y="0" width="147" height="20"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{Name}]]></textFieldExpression> 
      </textField> 
      <textField pattern="dd/MM/yyyy"> 
       <reportElement uuid="e6eb6f83-b8f3-42fd-b116-02db2322b6a5" x="147" y="0" width="100" height="20"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{Birthday}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 

Et le résultat sera (via aperçu dans iReport) :

enter image description here

Remarque:

Je l'ai utilisé iReport 5.1.0

+0

Merci, c'est une excellente solution. J'ai essayé beaucoup de semblables. Une dernière question: puis-je gérer différents types de dates (par exemple, aaaa-mm-jj et aaaa/mm/jj) en même temps dans iReport? – Daniel

+1

Vous êtes les bienvenus :) La réponse à votre question supplémentaire est "Non, vous ne pouvez pas". Pour plus de détails, consultez ma réponse sur votre question [Jasper iReport personnalisée date et heure personnalisée] (http://stackoverflow.com/q/18269626/876298);) –

Questions connexes