我正在使用JasperReport的iReport 4.5.0
设计器来构建我的报告。我对时间戳字段startDate
和endDate
存在一个问题。在我的设计师中,我使用模式更改了startDate
和endDate
的格式。
但是,问题在于,当我将报告导出为.excel或.pdf时,它仍然以时间戳格式提供日期,而不是我在模式中完成的格式YYYY-MM-dd
。
我的报告随starDate生成为 2012-03-01 00:00:00.0 ,但我希望我的Excel报告在 2012-03-01 中加入starDate YYYY-MM-dd
。
您拥有的任何解决方案我不想将我的数据库类型从datetime更改为日期。
我的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 :(得分:6)
如果导出为Excel格式,您可以尝试设置net.sf.jasperreports.export.xls.detect.cell.type属性以获得正确的格式。
这个问题很奇怪。您可以添加 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,我有两个textFields(使用DateFormat
而不使用它)的正确数据。