无法删除重复的columnHeaders和pageFooter

时间:2016-06-09 13:31:34

标签: java jasper-reports

我需要以三种不同的格式为我的Web应用程序创建一些报告:PDF,Excel和MSWord。我能够正确生成pdf和.doc格式的报告。但是,当我将同一报表转换为Excel时,columheaders和页脚将多次填充在同一个excel表中。

我认为在jrxml文件中添加以下代码行可以解决我的问题,

<property name="net.sf.jasperreports.export.xls.exclude.origin.band.1"  alue="columnHeader"/>
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter"/>

但我仍然使用多个columheaders获得excel格式的报告。如何删除?

我的完整Jrxml文件是

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.2.2.final using JasperReports Library version 6.2.2  -->
<!-- 2016-06-02T10:05:45 -->
<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="HelthReport" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3135d1b0-6264-49a2-ada6-e9fff1d6ed86">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.1" value="columnHeader"/>
<property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter"/>
<style name="Title" fontName="Times New Roman" fontSize="50" isBold="true" pdfFontName="Times-Bold"/>
<style name="SubTitle" forecolor="#736343" fontName="Arial" fontSize="18"/>
<style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/>
<style name="Detail" fontName="Arial" fontSize="12"/>
<style name="Row" mode="Transparent">
    <conditionalStyle>
        <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression>
        <style backcolor="#D4E8FC"/>
    </conditionalStyle>
</style>
<queryString>
    <![CDATA[]]>
</queryString>
<field name="health" class="java.lang.String">
    <fieldDescription><![CDATA[health]]></fieldDescription>
</field>
<field name="groupColor" class="java.lang.String">
    <fieldDescription><![CDATA[groupColor]]></fieldDescription>
</field>
<field name="ip" class="java.lang.String">
    <fieldDescription><![CDATA[ip]]></fieldDescription>
</field>
<field name="rtc" class="java.lang.String">
    <fieldDescription><![CDATA[rtc]]></fieldDescription>
</field>
<field name="siteId" class="java.lang.Integer">
    <fieldDescription><![CDATA[siteId]]></fieldDescription>
</field>
<background>
    <band splitType="Stretch"/>
</background>
<title>
    <band height="43" splitType="Stretch">
        <frame>
            <reportElement mode="Opaque" x="1" y="0" width="801" height="43" backcolor="#127196" uuid="ac378a6a-2972-4cb3-bffb-4471fe268224"/>
        </frame>
        <staticText>
            <reportElement style="Title" x="302" y="0" width="226" height="39" forecolor="#FFFFFF" uuid="3a1f4ac6-b143-4ad0-ad6f-074db8b81aef"/>
            <textElement verticalAlignment="Middle">
                <font size="24" pdfFontName="Times-Roman"/>
            </textElement>
            <text><![CDATA[Health Status Report]]></text>
        </staticText>
    </band>
</title>
<pageHeader>
    <band splitType="Stretch"/>
</pageHeader>
<columnHeader>
    <band height="24" splitType="Stretch">
        <frame>
            <reportElement mode="Opaque" x="1" y="0" width="801" height="24" backcolor="#8CC1ED" uuid="ee52a0d7-20d0-4b48-85b3-34df95379e13"/>
        </frame>
        <staticText>
            <reportElement x="50" y="4" width="130" height="20" uuid="9c58e2de-8331-4a2c-933d-e8ba4d5d0eb5"/>
            <textElement textAlignment="Center">
                <font fontName="Arial" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[RTC]]></text>
        </staticText>
        <staticText>
            <reportElement x="49" y="4" width="100" height="20" uuid="16f37b57-7817-4e17-a923-ba804b94cc80"/>
            <textElement textAlignment="Center">
                <font fontName="Arial" size="12"/>
            </textElement>
            <text><![CDATA[Site ID]]></text>
        </staticText>
        <staticText>
            <reportElement x="478" y="4" width="134" height="20" uuid="6ce29c18-fb1a-4360-bb9d-59cd26964b4b"/>
            <textElement textAlignment="Center">
                <font fontName="Arial" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[Group Lamp Colour]]></text>
        </staticText>
        <staticText>
            <reportElement x="336" y="4" width="102" height="20" uuid="edbfd0a1-56d6-4536-8c07-f482ff7b1dee"/>
            <textElement textAlignment="Center">
                <font fontName="Arial" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[Health]]></text>
        </staticText>
        <staticText>
            <reportElement x="666" y="4" width="100" height="20" uuid="86d6feb5-371a-4f4e-b6e6-498b7bf29c96"/>
            <textElement textAlignment="Center">
                <font fontName="Arial" size="12" isBold="true"/>
            </textElement>
            <text><![CDATA[IP]]></text>
        </staticText>
    </band>
</columnHeader>
<detail>
    <band height="21" splitType="Stretch">
        <frame>
            <reportElement style="Row" mode="Opaque" x="0" y="0" width="801" height="21" uuid="5265c0b1-ffe5-40dc-b6a2-0972c41a6bc8"/>
            <textField>
                <reportElement x="478" y="0" width="134" height="21" uuid="3adc89e7-c253-4570-87d6-3cd21d8897b0"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{groupColor}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="50" y="0" width="130" height="21" uuid="622912bf-b67f-449c-88f2-4901e42d9a5e"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{rtc}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="49" y="0" width="100" height="21" uuid="80c4e081-c861-4dd8-b6ae-5bd3c58ba39e"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{siteId}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="330" y="0" width="120" height="21" uuid="0173c072-b617-41af-9b53-d4062287925c"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{health}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="666" y="0" width="100" height="21" uuid="8e94a19a-5894-4bb3-b6f0-7cc3a140264f"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{ip}]]></textFieldExpression>
            </textField>
        </frame>
    </band>
</detail>
<columnFooter>
    <band splitType="Stretch"/>
</columnFooter>
<pageFooter>
    <band height="22" splitType="Stretch">
        <frame>
            <reportElement mode="Opaque" x="0" y="1" width="802" height="21" forecolor="#000000" backcolor="#B3D9FC" uuid="12131ca3-805b-479a-91b1-fbb2c6b58127"/>
            <textField evaluationTime="Report">
                <reportElement style="Column header" x="742" y="1" width="40" height="20" forecolor="#000000" uuid="9bd68a2c-6c46-4948-89a9-c726fd2b1936"/>
                <textElement verticalAlignment="Middle">
                    <font size="10" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement style="Column header" x="662" y="1" width="80" height="20" forecolor="#000000" uuid="ce68a3c3-8b34-466e-abd6-70ddf2200db0"/>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="10" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
            </textField>
            <textField pattern="EEEEE dd MMMMM yyyy">
                <reportElement style="Column header" x="22" y="1" width="197" height="20" forecolor="#000000" uuid="1a66d15c-30d0-40d3-9b8c-d03328944f03"/>
                <textElement verticalAlignment="Middle">
                    <font size="10" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
            </textField>
        </frame>
    </band>
</pageFooter>
<summary>
    <band splitType="Stretch"/>
</summary>

我生成报告的java代码是

public byte[] generateReportXls (HttpServletRequest request, Map<String, Object> parameters, String fileName, 
        JRBeanCollectionDataSource beanColDataSource)throws JRException, NamingException,  IOException {
    byte[] xlsReport = null;
    JasperReport jasperReport = getCompiledFile(fileName, request); 
    if(jasperReport==null){
        return null;
    }
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, beanColDataSource);
    if (jasperPrint != null) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        JRXlsExporter exporter = new JRXlsExporter();
        exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
        exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(baos));
        SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
        configuration.setOnePagePerSheet(false);
        configuration.setDetectCellType(true);
        configuration.setCollapseRowSpan(false);
        configuration.setWhitePageBackground(false);
        configuration.setIgnoreCellBackground(true);
        configuration.setRemoveEmptySpaceBetweenColumns(true);
        configuration.setRemoveEmptySpaceBetweenRows(true);

        exporter.setConfiguration(configuration); 
        exporter.exportReport();
        xlsReport = baos.toByteArray();         
    }
    return xlsReport;
}

1 个答案:

答案 0 :(得分:0)

@RequestMapping(method = RequestMethod.POST,params={"xls"})
public void toXls(HttpServletRequest request,HttpServletResponse response,
        @RequestParam("from_date") String fromDate, @RequestParam("to_date") String toDate)throws IOException, URISyntaxException{

    String sourceFileName = "LoginActivityExcelReport";
    Map<String, Object> parameters = new HashMap<String, Object>();
    **parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);**
    List<ActivityReportItem> beanCollection = activityReportService.getActivityListForDownload(fromDate, toDate);
    byte[] xlsReport = new byte[1]; 
    try {           
        JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(beanCollection);
        logger.info("!!! Compiling and Generating Excel Report from "+sourceFileName+".jrxml file");
        xlsReport = jasperUtil.generateReportXls(request, parameters, sourceFileName, beanColDataSource);
    } catch (Exception e) {
        logger.error("Error while generating pdf file", e);
    }
    response.addCookie(new Cookie("downloadCompleted","true"));
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", "LoginActivityReport.xls"));
    response.setContentLength(xlsReport.length);
    response.getOutputStream().write(xlsReport);
    response.getOutputStream().flush();
    response.getOutputStream().close(); 
}