8
votes

Format de cellule Excel dans le rapport de rapport Jasper

Je travaille sur le rapport JasperReport qui génère un fichier Excel. Pour une raison quelconque, mes formats / types de cellules ne sont pas comment ils devraient être. Par exemple, j'ai un objet de date dans ma cellule, mais lorsque je génère un fichier Excel, il définit le type de cellule sur le numéro ou le type long est un texte dans la cellule mais le format de la cellule est numéro et lorsque l'utilisateur modifie la cellule de date (par exemple avec la date 11/02 / 2012 a changé en 11/03/2012) Il convertit la date au numéro (41581.00).

Voici mon code (il génère simplement le flux contextuel à la fenêtre du navigateur avec le rapport): P>

<textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="0" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.Long"><![CDATA[$F{id}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="200" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{emsProdNo}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="100" y="0" width="100" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{courseName}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" pattern="MMMMM dd, yyyy" isBlankWhenNull="true">
                <reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="300" y="0" width="98" height="20"/>
                <textElement>
                    <font isUnderline="true"/>
                </textElement>
                <textFieldExpression class="java.util.Date"><![CDATA[$F{startDate}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="474" y="0" width="81" height="20"/>
                <textElement/>
                <textFieldExpression class="java.lang.String"><![CDATA[$F{endDateStr}]]></textFieldExpression>
            </textField>


0 commentaires

4 Réponses :


3
votes

Le problème est / était que, parce que j'utilise POI 3.5 et JasperReports 3.7.0 et générer le format Excel XLSX. POI 3.5 sera pris en charge dans JasperReports 3.7.1 (ou simplement obtenir un instantané de SVN). Alors, qu'est-ce que j'ai fait, je viens de retourner au vieux fichier Excel (XLS) et cela a fonctionné parfaitement.


0 commentaires

2
votes

juste fyi xxx

ou is_detect_cell_type, boolean.true est celui qui donne la date à passer au numéro.


1 commentaires

Donc, ce que vous dites, c'est que lorsque cet indicateur est sur la cellule d'Excel ne reconnaîtra pas correctement le type de date à la date. Lorsque cela est défini sur False Number, les champs vont mal. Alors, comment puis-je faire fonctionner les deux types bien i xlsx?



10
votes

dans la nouvelle version de jasperReports le paramètre net.sf.jasperreports.export.xls.pattern a été introduit.

L'échantillon: xxx

informations sur ce paramètre est ici . L'échantillon d'utilisation est ici .


0 commentaires

2
votes

jasperReports version 4.1.1 net.sf.jasperreports.export.xls.pattern a été introduit.

vérifier

dans les expressions de propriétés

nom de propriétés >> net.sf.jasperreports.export.xls.pattern

valeur de propriétés >> @ pour texte, aaaa-mm-dd pour le format de date, #, ## 0,00; - #, ## 0,00 pour la monnaie, etc ....


0 commentaires