首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jasperreports大型excel文件

jasperreports大型excel文件
EN

Stack Overflow用户
提问于 2016-06-05 13:39:04
回答 1查看 1.5K关注 0票数 0

我有一些使用JasperReports库导出它们的报告。除了excel文件(xls)之外,所有这些都很好。例如,当我试图导出一个将751行作为excel文件的精确报表时,没有问题,excel文件将被正确下载,但当它超过800行时,它将显示一些不相关的字符。上面提到的行大小仅适用于此报表,而对于其他报告,则限制在不同的数字上。在我将库从2.3版升级到6.1.0之前,这个问题并不存在,现在我尝试了6.2.2。

我就是这样创建excel文件的:

代码语言:javascript
运行
复制
    JasperPrint jasperPrint;
    try {
        jasperPrint = getReportPrint(request, baseForm, "excel");
    } catch (ReportNoDataException e) {
        return handleNoData(mapping, request, e);
    }

    try {
        JRXlsExporter jrXlsExporter = new JRXlsExporter();
        try {
            jrXlsExporter.setExporterInput(new SimpleExporterInput(jasperPrint));
            jrXlsExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));

            SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
            configuration.setIgnoreCellBorder(true);
            configuration.setWrapText(true);
            configuration.setWhitePageBackground(false);
            configuration.setRemoveEmptySpaceBetweenColumns(true);
            configuration.setRemoveEmptySpaceBetweenRows(true);
            configuration.setAutoFitPageHeight(true);
            configuration.setDetectCellType(true);
            configuration.setSheetDirection(RunDirectionEnum.RTL);

            jrXlsExporter.setConfiguration(configuration);
            jrXlsExporter.exportReport();
        } catch (IOException e) {
            log.error("IOException occured" + e);
            e.printStackTrace();
        } catch (JRException e) {
            log.error("JRException occured while exporting for xls format", e);
            e.printStackTrace();
        }
    } catch (Exception e) {
        throw e;
    }
    String filename="report";
    response.setHeader("Content-disposition","attachment; filename=\""+filename+".xls\"");
    putSearchForm(request, baseForm);
    return null;

以下是报告代码:

代码语言:javascript
运行
复制
<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="mtdTankhahEdaratMojoodiExcelReport" pageWidth="595" pageHeight="60" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" scriptletClass="report.webapp.tlmReportScriptlet" uuid="4354b1d9-63b2-4236-b190-ac5b2fb0f464">
<property name="com.jaspersoft.studio.unit." value="pixel"/>
<queryString>
    <![CDATA[]]>
</queryString>
<field name="no" class="java.lang.String">
    <fieldDescription><![CDATA[no]]></fieldDescription>
</field>
<field name="baseDate" class="java.lang.String">
    <fieldDescription><![CDATA[baseDate]]></fieldDescription>
</field>
<field name="pardakht" class="java.lang.Double">
    <fieldDescription><![CDATA[pardakht]]></fieldDescription>
</field>
<field name="daryaft" class="java.lang.Double">
    <fieldDescription><![CDATA[daryaft]]></fieldDescription>
</field>
<field name="zinaf" class="java.lang.String">
    <fieldDescription><![CDATA[zinaf]]></fieldDescription>
</field>
<field name="sanadType" class="java.lang.String">
    <fieldDescription><![CDATA[sanadType]]></fieldDescription>
</field>
<variable name="mande" class="java.lang.Double">
    <variableExpression><![CDATA[($F{pardakht}==null || $F{daryaft}==null) ? new Double(0) :
(new Double(($F{daryaft}.doubleValue()-$F{pardakht}.doubleValue())+
$V{mande}.doubleValue()))]]></variableExpression>
    <initialValueExpression><![CDATA[new Double("0")]]></initialValueExpression>
</variable>
<title>
    <band height="30" splitType="Stretch">
        <staticText>
            <reportElement key="staticText-4" x="0" y="0" width="30" height="30" uuid="36cd81f4-073b-4023-b5b8-716d43a4d377">
                <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                <property name="com.jaspersoft.studio.unit.x" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[ردیف]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-8" x="275" y="0" width="80" height="30" uuid="0827df09-4353-424e-94fa-dd8cc7d5c6ac">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[نوع سند]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-9" x="190" y="0" width="85" height="30" uuid="13490ca9-0ba0-4315-b5a0-745ce020f9e1">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[تاریخ سند]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-12" x="110" y="0" width="80" height="30" uuid="544625a2-83d3-405d-a117-c0fa6820813a">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[شماره سند]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-14" x="355" y="0" width="80" height="30" uuid="fc76869a-b6b1-4223-8ab3-26a870a23e08">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[دریافت]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-14" x="515" y="0" width="80" height="30" uuid="f53ebc1b-eaaa-487b-bd23-ee62a1534caa"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[مانده]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-14" x="435" y="0" width="80" height="30" uuid="aa3bda32-9b4c-4e53-927a-f6750256fb51"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[پرداخت]]></text>
        </staticText>
        <staticText>
            <reportElement key="staticText-12" x="30" y="0" width="80" height="30" uuid="b8c6b055-1b5e-4923-954b-a4eed5bab543">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[ذینفع]]></text>
        </staticText>
    </band>
</title>
<detail>
    <band height="30" splitType="Stretch">
        <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-1" stretchType="RelativeToTallestObject" x="0" y="0" width="30" height="30" isPrintWhenDetailOverflows="true" uuid="263cfc8f-7812-4797-843c-42fe00045f98">
                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
            </reportElement>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-5" stretchType="RelativeToTallestObject" x="355" y="0" width="80" height="30" isPrintWhenDetailOverflows="true" uuid="baaa6584-8b9d-4523-a698-a68d065b8892"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($F{daryaft} == null)? new Double("0"): $F{daryaft}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-6" stretchType="RelativeToTallestObject" x="190" y="0" width="85" height="30" isPrintWhenDetailOverflows="true" uuid="073a34ff-2e81-4265-a580-beb8fb293ae0"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($F{baseDate} == null)? "---" : $F{baseDate}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-9" stretchType="RelativeToTallestObject" x="110" y="0" width="80" height="30" isPrintWhenDetailOverflows="true" uuid="e1c072ca-5d06-453c-a739-c797507a92b0"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($F{no} == null)? "---" : $F{no}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-11" stretchType="RelativeToTallestObject" x="435" y="0" width="80" height="30" isPrintWhenDetailOverflows="true" uuid="a5778bf8-71da-4c84-82b8-219f27f04065"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($F{pardakht} == null)? new Double("0"): $F{pardakht}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-11" stretchType="RelativeToTallestObject" x="515" y="0" width="80" height="30" isPrintWhenDetailOverflows="true" uuid="a762bdfa-4d3f-4975-b70d-d25875d15af8"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($V{mande} == null)? new Double("0"): $V{mande}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-5" stretchType="RelativeToTallestObject" x="275" y="0" width="80" height="30" isPrintWhenDetailOverflows="true" uuid="d8c12462-e172-47eb-a301-905e356465b2"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($F{sanadType} == null)? "---": $F{sanadType}]]></textFieldExpression>
        </textField>
        <textField isStretchWithOverflow="true" isBlankWhenNull="true">
            <reportElement key="textField-9" stretchType="RelativeToTallestObject" x="30" y="0" width="80" height="30" isPrintWhenDetailOverflows="true" uuid="7eae6f3a-173e-479d-90d7-38b6c5a5b99f"/>
            <box>
                <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
                <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>
            </box>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="bnazanin" size="12"/>
            </textElement>
            <textFieldExpression><![CDATA[($F{zinaf} == null)? "---" : $F{zinaf}]]></textFieldExpression>
        </textField>
    </band>
</detail>
</jasperReport>

下面是报告中的截图:

有什么办法可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 06:53:29

您正在查看的输出是Excel输出。如果您在文本编辑器中打开它,这就是Excel文件的样子(我使用了一个随机的XLS文件,并在Notepad++中打开它):

这意味着您的响应不是将内容作为Excel文件提供,而是以直接下载的形式提供,直接显示在浏览器中。

尝试向您的响应(from here并设置为适合Java)添加其他参数,以使其更显式:

代码语言:javascript
运行
复制
response.setHeader("Content-Type:   application/vnd.ms-excel; charset=utf-8");
response.setHeader("Expires: 0");
response.setHeader("Cache-Control: must-revalidate, post-check=0, pre-check=0");
response.setHeader("Cache-Control: private");

编辑

如果这种情况发生在较大的文件中,请看一看this answer,它描述了相同的问题。通常情况下,您应该尽早发送响应头,然后生成报告文件。

简短:您应该首先将所有内容写入标题(我怀疑您在response上有更多的内容),然后尝试生成该文件。因此浏览器得到一个结果,看到一个应用程序文件即将到来,并将提供一个下载。否则,据我所知,response头是在生成文件之后设置的--这可能太长,浏览器无法等待Content-Type

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37642558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档