使用 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的主要内容,如果未能解决你的问题,请参考以下文章
Python/pandas 导出到 excel 转换日期时间 (HH:mm)