2012-02-29 139 views
3

我使用JasperReport的iReport 4.5.0设计器来构建我的报告。我遇到了时间戳字段startDateendDate的一个问题。在我的设计师中,我改变了startDateendDate的格式。使用java生成JasperReports生成mysql日期时间格式

但是,的问题是,当我导出报告.excel或.pdf格式它仍然给我时间戳格式日期,不是格式YYYY-MM-dd我在做模式。

我的报告与starDate产生的2012-03-01 00:00:00.0,但我想我的Excel报表是有starDate在2012-03-01YYYY-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> 
+0

'startDate'和'endDate'确实是变量还是它们是字段?你可以从'jrxml'文件(使用'startDate','endDate'声明和使用这个变量的示例)发布代码片段吗? – 2012-02-29 07:01:47

+0

@AlexK感谢您的回复。我更新了我的问题,并添加了projectmain.jrxml文件。告诉我任何解决方案,我可以尝试让它工作。 – 2012-02-29 07:24:56

回答

5

你可以尝试设置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,我拥有两个textField的正确数据(使用DateFormat且没有它)。

+0

谢谢你完美的作品。 – 2012-02-29 08:14:10

+0

@YogendraSingh欢迎) – 2012-02-29 08:16:32