将jrxml文件转换为csv文件:前导零被截断

时间:2013-09-21 14:13:46

标签: jasper-reports

我有从jrxml到pdf的转换。我在DTO中将数据发送为 001 ,但在 Excel 中显示相同数据时,它变为 1 。以下是用于显示数据的代码。

代码:

<textField isStretchWithOverflow="true" isBlankWhenNull="true">
    <reportElement style="table 5_CH" stretchType="RelativeToTallestObject" x="0" y="0" width="71" height="26" backcolor="#FFFFFF">
        <property name="class" value="sortable"/>
    </reportElement>
       <textElement textAlignment="Left" verticalAlignment="Middle">
        <font pdfFontName="Helvetica"/>
        <paragraph lineSpacing="Single" firstLineIndent="3" spacingAfter="5"/>
       </textElement>
     <textFieldExpression class="java.lang.String"><![CDATA[$F{reference}]]>  
     </textFieldExpression>
</textField>

我还需要显示前导零。所以请告诉我如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

经过大量的谷歌搜索,我找到了答案。我将数据发送为String,但仍然会截断前导零。

问题是,excel将此输入作为数字并截断前导零。

为了阻止excel执行此操作,请在数据前加上 '=' and append our data in double quotes

即,我发送的输入是001,应该转换为"=" + "\"" + "001" + "\"",因此它变为 =“001”然后在excel中它会知道给定一个是text,它不会截断前导零。

<强>附录:

我在显示日期时遇到了麻烦。要求是,日期应显示为04 Apr 2013,但如果我将其发送到Excel,则会将其转换为04-Apr-2013,这在我的情况下是不可接受的。

上面的相同逻辑在这里也很有用,

只需将'='附加到输入数据即可。说"=" + "\"" + 04 Apr 2013 + "\""就这样吧 的 ="04 Apr 2013" 即可。现在,日期被视为text,并按原样显示。

希望这会对某人有所帮助.. :)

答案 1 :(得分:1)

您正在使用 MS Excel 应用程序查看 csv 文件。 csv 只是一种纯文本格式,它不包含“如何显示数据”的信息。此类数据的视图仅取决于您的查看者。因此,您可以尝试使用 JRXlsExporter JExcelApiExporter JRXlsxExporter 导出程序 - 以 Excel 格式构建报表( xls xlsx )。

让我们看一个例子。我们将 csv 文件作为数据源。

csv 文件数据( excel_data.csv ):

number_as_string,date,number_as_int
001,2013-09-23,1
002,2013-09-22,3
3,2013-09-21,4
004,2013-09-20,5

iReport 中数据源的配置将为:

enter image description here

我们将使用示例中的net.sf.jasperreports.export.xls.patternnet.sf.jasperreports.export.xls.detect.cell.type属性来获取我们想要的格式的信息。

我们的模板将是:

<?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="test_excel_formatting" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="952b781d-520d-4a76-aa59-f635b8759fbe">
    <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="number_as_string" class="java.lang.String"/>
    <field name="date" class="java.util.Date"/>
    <field name="number_as_int" class="java.lang.Integer"/>
    <columnHeader>
        <band height="42" splitType="Stretch">
            <staticText>
                <reportElement uuid="667b6ca6-bf50-404e-8ef1-c654456ed8e4" stretchType="RelativeToTallestObject" mode="Opaque" x="0" y="0" width="88" height="42" backcolor="#FF99CC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Number as String, without pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="080a5cc0-fa66-4b11-a3d3-f0b8a4e69204" stretchType="RelativeToTallestObject" mode="Opaque" x="88" y="0" width="88" height="42" backcolor="#9999FF"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Number as Int, without pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="d1fc6219-2e33-4cc9-b4fe-4ac2b5365102" stretchType="RelativeToTallestObject" mode="Opaque" x="176" y="0" width="104" height="42" backcolor="#99FFCC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Date without pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="991837d7-a1ab-44ed-8177-756cfae9d369" stretchType="RelativeToTallestObject" mode="Opaque" x="280" y="0" width="104" height="42" backcolor="#9999FF"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Number as Int with common pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="d38154af-2017-4e10-a176-4d66e5cc9f96" stretchType="RelativeToTallestObject" mode="Opaque" x="384" y="0" width="104" height="42" backcolor="#9999FF"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Number as Int with xls pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="17f57019-8691-4643-abdb-ab15afe63f36" stretchType="RelativeToTallestObject" mode="Opaque" x="488" y="0" width="104" height="42" backcolor="#9999FF"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Number as Int with common and  xls pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="f4f506bf-9511-4e1e-805b-8752a98e91ea" stretchType="RelativeToTallestObject" mode="Opaque" x="592" y="0" width="104" height="42" backcolor="#99FFCC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Date with common pattern]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="dffea96e-1dfa-47e0-8551-dd417c25ecbd" stretchType="RelativeToTallestObject" mode="Opaque" x="696" y="0" width="104" height="42" backcolor="#99FFCC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <text><![CDATA[Date with common pattern]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="3d11d568-6e2c-4373-af7d-fa79b99a2908" mode="Opaque" x="0" y="0" width="88" height="20" backcolor="#FF99CC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{number_as_string}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="8b8f968e-ca6d-44d0-bc2e-50a4773d0a6f" mode="Opaque" x="88" y="0" width="88" height="20" backcolor="#9999FF"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{number_as_int}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="943a468b-491d-4955-b0c0-58d550536234" mode="Opaque" x="176" y="0" width="104" height="20" backcolor="#99FFCC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
            </textField>
            <textField pattern="000000">
                <reportElement uuid="52a26b66-1ef5-4f77-a4a2-900a606a1171" mode="Opaque" x="280" y="0" width="104" height="20" backcolor="#9999FF"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{number_as_int}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="c26be152-fae4-4a85-ae55-c70e27739a87" mode="Opaque" x="384" y="0" width="104" height="20" backcolor="#9999FF">
                    <property name="net.sf.jasperreports.export.xls.pattern" value="00000000000000"/>
                </reportElement>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{number_as_int}]]></textFieldExpression>
            </textField>
            <textField pattern="00000">
                <reportElement uuid="fab0fba1-1718-479d-841b-6cbaf1963a0b" mode="Opaque" x="488" y="0" width="104" height="20" backcolor="#9999FF">
                    <property name="net.sf.jasperreports.export.xls.pattern" value="00000000000000"/>
                </reportElement>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{number_as_int}]]></textFieldExpression>
            </textField>
            <textField pattern="dd-MMM-yyyy">
                <reportElement uuid="07552f94-56c8-413d-8dd8-5b5c667c81cf" mode="Opaque" x="592" y="0" width="104" height="20" backcolor="#99FFCC"/>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="844449f9-1578-4729-b911-18bdd17f8cd4" mode="Opaque" x="696" y="0" width="104" height="20" backcolor="#99FFCC">
                    <property name="net.sf.jasperreports.export.xls.pattern" value="dd mmmm yyyy"/>
                </reportElement>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                    <rightPen lineWidth="0.25"/>
                </box>
                <textElement/>
                <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

iReport 中的报告设计如下所示:

enter image description here

在示例中,我将报告的属性 net.sf.jasperreports.export.xls.detect.cell.type 设置为 true

我将没有任何模式的 number_as_string 字段放入第一列(粉红色)。

我已将 number_as_int 字段放入第2,4,5,6列(蓝色)。

  • 第2列不包含任何图案。
  • 第4列确实包含常见的 textFields 元素的 模式 属性。我使用了 000000 值。
  • 对于第5列,我设置了 net.sf.jasperreports.export.xls.pattern 属性。我为它设置了 00000000000000 值。
  • 第6列是混合变体 - 我设置了 net.sf.jasperreports.export.xls.pattern 属性和 textFields < / em>元素的模式。

我已将日期字段放入第3,7,8列(绿色)。

  • 第3列不包含任何图案。将使用默认模式。
  • 第7列确实包含常见的 textFields 元素的 模式 属性。我使用了 dd-MMM-yyyy 值。
  • 对于第8列,我设置了 net.sf.jasperreports.export.xls.pattern 属性。我为它设置了 dd mmmm yyyy 值。

结果(以 Excel 格式生成的文件)将为:

enter image description here

备注
如您所见,第一列包含原始格式的数据。

第6列包含借助 net.sf.jasperreports.export.xls.pattern 属性设置的格式数据。此属性比 textFields 元素的 模式 属性“更强大”。

Excel 文件是借助 iReport 5.2.0 生成的,其中包含 XLS预览 XLS预览(使用JExcel API) Excel 2007(XLSX)预览选项 - 结果相同。