【问题标题】:mysql datetime format change using java for JasperReports generationmysql datetime 格式更改使用 java 生成 JasperReports
【发布时间】:2012-02-29 16:05:51
【问题描述】:

我正在使用 JasperReport 的 iReport 4.5.0 设计器来构建我的报告。我对时间戳字段startDateendDate 有一个问题。在我的设计师中,我使用模式更改了startDateendDate 的格式。

但是,问题是,当我将报告导出为 .excel 或 .pdf 时,它仍然以时间戳格式显示日期,而不是 YYYY-MM-dd我在模式中所做的格式。 p>

我的报告使用 starDate 生成为 2012-03-01 00:00:00.0 但我希望我的 excel 报告在 2012-03-01 中有 starDate YYYY-MM-dd.

您有任何解决方案,我不想将我的数据库类型从日期时间更改为日期。

我的 projectmain.jrxml 文件代码如下:

<?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="projectmain" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <import value="java.util.Date"/>
    <parameter name="pagelimit" class="java.lang.Integer">
        <defaultValueExpression><![CDATA[]]></defaultValueExpression>
    </parameter>
    <parameter name="pagestart" class="java.lang.Integer">
        <defaultValueExpression><![CDATA[]]></defaultValueExpression>
    </parameter>
    <queryString>
        <![CDATA[select * from project limit $P{pagestart},$P{pagelimit}]]>
    </queryString>
    <field name="projectid" class="java.lang.Integer"/>
    <field name="enddate" class="java.sql.Timestamp"/>
    <field name="projectdesc" class="java.lang.String"/>
    <field name="projectname" class="java.lang.String"/>
    <field name="projecttitle" class="java.lang.String"/>
    <field name="startdate" class="java.sql.Timestamp"/>
    <background>
        <band/>
    </background>
    <title>
        <band height="56">
            <staticText>
                <reportElement x="0" y="0" width="410" height="56"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Century" size="24"/>
                </textElement>
                <text><![CDATA[Project Management Report Generation]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="28">
            <staticText>
                <reportElement mode="Opaque" x="0" y="0" width="555" height="28" forecolor="#FFFFFF" backcolor="#666666"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Century" size="16" isBold="true"/>
                </textElement>
                <text><![CDATA[Project Management Report Generation]]></text>
            </staticText>
        </band>
    </pageHeader>
    <columnHeader>
        <band height="29">
            <staticText>
                <reportElement mode="Opaque" x="0" y="0" width="144" height="29" backcolor="#CCCCCC"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font fontName="Century" size="16"/>
                </textElement>
                <text><![CDATA[Project Title]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="144" y="0" width="158" height="29" backcolor="#CCCCCC"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font fontName="Century" size="16"/>
                </textElement>
                <text><![CDATA[Project Name]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="302" y="0" width="151" height="29" backcolor="#CCCCCC"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font fontName="Century" size="16" isUnderline="false"/>
                </textElement>
                <text><![CDATA[Start Date]]></text>
            </staticText>
            <staticText>
                <reportElement mode="Opaque" x="453" y="0" width="102" height="29" backcolor="#CCCCCC"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font fontName="Century" size="16"/>
                </textElement>
                <text><![CDATA[End Date]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="29">
            <textField>
                <reportElement x="0" y="0" width="144" height="29"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Bottom">
                    <font fontName="Century" size="12" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{projecttitle}]]></textFieldExpression>
            </textField>
            <textField pattern="d/M/yyyy">
                <reportElement x="453" y="0" width="102" height="29"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Bottom">
                    <font fontName="Century" size="12" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{enddate}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="144" y="0" width="158" height="29"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Bottom">
                    <font fontName="Century" size="12" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{projectname}]]></textFieldExpression>
            </textField>
            <textField pattern="d/M/yyyy">
                <reportElement x="302" y="0" width="151" height="29"/>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement verticalAlignment="Bottom">
                    <font fontName="Century" size="12" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{startdate}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="60">
            <textField pattern="MMMMM dd, yyyy">
                <reportElement mode="Opaque" x="0" y="20" width="555" height="20" forecolor="#000000" backcolor="#CCCCCC"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="Calibri" size="14" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
            </textField>
        </band>
    </columnFooter>
    <pageFooter>
        <band height="31">
            <staticText>
                <reportElement x="0" y="1" width="541" height="30"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="Century" size="10" isBold="false"/>
                </textElement>
                <text><![CDATA[Copyright © Project Management 2012 | Design by Kintudesigns.com]]></text>
            </staticText>
        </band>
    </pageFooter>
    <summary>
        <band height="42"/>
    </summary>
</jasperReport>

【问题讨论】:

  • startDateendDate 真的是变量还是字段?你能从jrxml 文件中发布sn-p(带有startDateendDate 声明和使用此变量的示例)吗?
  • @AlexK 感谢您的回复。我已经更新了我的问题,并将 projectmain.jrxml 文件添加到其中。告诉我任何我可以尝试让它发挥作用的解决方案。

标签: java jasper-reports


【解决方案1】:

您可以尝试设置net.sf.jasperreports.export.xls.detect.cell.type 属性以确保格式正确,以防导出为 Excel 格式。

这个问题很奇怪。您可以添加 java.text.DateFormat 类型的变量并像在此示例中一样使用它:

<?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="datetime_format" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
    <queryString>
        <![CDATA[SELECT date1, date2 FROM table]]>
    </queryString>
    <field name="date1" class="java.sql.Timestamp"/>
    <field name="date2" class="java.sql.Timestamp"/>
    <variable name="dateFormat" class="java.text.DateFormat" resetType="None">
        <variableExpression><![CDATA[new SimpleDateFormat("yyyy-MM-dd")]]></variableExpression>
    </variable>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="11" y="0" width="194" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$V{dateFormat}.format($F{date1})]]></textFieldExpression>
            </textField>
            <textField pattern="yyyy-MM-dd">
                <reportElement x="205" y="0" width="272" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{date2}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

这对我有用。我对 PDF 和 XLS 的两个文本字段(使用 DateFormat 和不使用它)都有正确的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多