1

我开始与 Jasper 合作,但遇到了一个小问题。我想导出我数据库中的日期并将其导出到 excel 并保存日期格式。日期与数据库中的日期一起保存。

错误是当我打开导出数据的 excel 文件时,日期不是格式日期而是一般。但是使用jrxml中编写的模式显示正确。

在此处输入图像描述

那是我用来进行excel导出的代码。我认为 jrxml 的另一部分是默认的。

<textField isStretchWithOverflow="true" pattern="dd/MM/yyyy" isBlankWhenNull="true" hyperlinkType="None">
            <reportElement stretchType="RelativeToBandHeight" x="343" y="0" width="68" height="21"/>
            <box>
                <pen lineWidth="0.5"/>
                <topPen lineWidth="0.5"/>
                <leftPen lineWidth="0.5"/>
                <bottomPen lineWidth="0.5"/>
                <rightPen lineWidth="0.5"/>
            </box>
            <textElement textAlignment="Right" verticalAlignment="Middle">
                <font fontName="Arial" size="10" isBold="true" isItalic="true" pdfFontName="arial.ttf"/>
            </textElement>
            <textFieldExpression class="java.util.Date"><![CDATA[$F{Date1}]]></textFieldExpression>
        </textField>

有谁知道我做错了什么???

另一个小问题: - 在我的 Eclipse 项目中,我使用 jasperreports.jar 版本 3.5,但我使用 iReporter 3.1.1 处理/修改 .jrxml。这可能会导致使用不同版本的问题或问题?

4

1 回答 1

1

参考:http: //jasperreports.sourceforge.net/sample.reference/xlsfeatures/index.html#xlsfeatures

当数据必须以完全可读和有意义的形式呈现时,格式模式很有用。举个例子,日期通常存储为数字(自 1970 年 1 月 1 日 00:00:00.000 GMT 以来经过的毫秒数)。但是读取这样的数字并不适合我们通常的日期表示,具有完美分隔的年、月和日字段。格式模式在这里是绝对必要的,以获得这些数字的有意义的表示。文本字段的模式属性来解决这个问题。对于几乎所有的输出格式,除了 Excel 格式。这是因为模式属性包含标准的 Java 格式模式。不幸的是,并非所有适用于 Java 的模式也适用于 Excel。在某些情况下,应翻译此类模式以便在 Excel 中识别。实现这种转换的一种较旧的方法是在运行时使用 getFormatPatternsMap() 导出器设置,与动态工作表名称部分所示的同样不方便:需要 Java 硬编码。取而代之的是,现在可以使用自定义属性 net.sf.jasperreports.export.xls.pattern 在元素级别的报表示例中为 Excel 指定正确的格式模式。查看 XlsFeaturesReport.jrxml 示例部分中的当前日期文本字段:Java硬编码的需要。取而代之的是,现在可以使用自定义属性 net.sf.jasperreports.export.xls.pattern 在元素级别的报表示例中为 Excel 指定正确的格式模式。查看 XlsFeaturesReport.jrxml 示例部分中的当前日期文本字段:Java硬编码的需要。取而代之的是,现在可以使用自定义属性 net.sf.jasperreports.export.xls.pattern 在元素级别的报表示例中为 Excel 指定正确的格式模式。查看 XlsFeaturesReport.jrxml 示例部分中的当前日期文本字段:

<textField pattern="EEE, MMM d, yyyy">
  <reportElement style="Sans_Bold" mode="Opaque" x="0" y="30" width="515" height="30" forecolor="#000000">
    <property name="net.sf.jasperreports.export.xls.pattern" value="ddd, mmm d, yyyy"/>
  </reportElement>
  ...
  </textField>

在这种情况下,EEE, MMM d, yyyy 模式在 Java 中完全有效,但会为 Excel 生成不可读的内容,在将报告导出到 Excel 时将替换为等效的 ddd, mmm d, yyyy 模式。

于 2019-10-11T10:20:40.523 回答