使用 jasper 将日期导出到 Excel

Posted

技术标签:

【中文标题】使用 jasper 将日期导出到 Excel【英文标题】:Export a Date to Excel using jasper 【发布时间】:2012-07-30 08:52:45 【问题描述】:

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

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

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

<textField isStretchWithOverflow="true" pattern="dd/MM/yyyy" isBlankWhenNull="true" hyperlinkType="None">
            <reportElement stretchType="RelativeToBandHeight" x="343" y="0"  />
            <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[$FDate1]]></textFieldExpression>
        </textField>

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

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

【问题讨论】:

可以发Date1字段的声明吗? 您可以使用net.sf.jasperreports.export.xls.detect.cell.type 报告的属性。您可以使用net.sf.jasperreports.export.xls.pattern 属性为单元格设置格式 更多详情您可以阅读这篇文章:***.com/questions/2003339/… & ***.com/questions/10714709/… 【参考方案1】:

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

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

<textField pattern="EEE, MMM d, yyyy">
  <reportElement style="Sans_Bold" mode="Opaque" x="0" y="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 模式。

【讨论】:

以上是关于使用 jasper 将日期导出到 Excel的主要内容,如果未能解决你的问题,请参考以下文章

为啥将数据导出到 Excel 时日期格式会发生变化?

Excel 导出日期格式出错,但仅适用于某些日期值

为啥java导出excel 日期格式不显示时分秒

Python/pandas 导出到 excel 转换日期时间 (HH:mm)

使用Aspose.Cells导出Excel遇到的日期格式问题

从 Access 导出到 Excel 时出现日期超出范围错误