簡體   English   中英

jasperreports大Excel文件

[英]jasperreports large excel file

我有一些使用JasperReports庫導出的報告。 除了excel文件(xls)都很好。 例如,當我嘗試將包含751行的精確報告導出為ex​​cel文件時,沒有問題,並且可以正確下載excel文件,但是當它超過800行時,它將顯示一些不相關的字符。 上面提到的行大小僅適用於此報告,而其他報告的行數限制為不同的數字。 在將庫從版本2.3升級到6.1.0之前,不存在此問題,現在我嘗試了6.2.2。

這是我創建Excel文件的方式:

    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;

這是報告代碼:

<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>

這是該報告的屏幕截圖: 報告結果

有什么想法可以解決這個問題嗎?

您正在查看的輸出是Excel輸出。 如果您在文本編輯器中將其打開,這就是Excel文件的樣子(我隨機抽取了XLS文件,並在Notepad ++中將其打開):

在此處輸入圖片說明

這意味着您的響應不是將內容作為Excel文件提供,而是作為直接下載提供,直接在瀏覽器中顯示。

嘗試在響應中添加其他參數( 從此處開始並設置為適合Java),以便更加明確:

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");

編輯

如果較大的文件發生這種情況,請看一下描述相同問題的答案 一般來說,應該先發送響應頭,然后再生成報告文件。

簡而言之:您應該首先將所有內容首先寫入標頭(我懷疑您確實對response更高的要求),然后嘗試生成文件。 這樣瀏覽器就會得到結果,看到一個應用程序文件將要下載。 否則,據我所知, response頭是在文件生成后設置的-對於瀏覽器來說,等待Content-Type可能太長了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM