سؤال

انا استخدم Jasper Report استخدام Java.

أملك

التقرير الرئيسي contains التقرير الفرعي contains التقرير الفرعي

المشكلة التي أحصل عليها هي أن التقرير الرئيسي يعرض التقرير الفرعي ولكن التقرير الفرعي لا يعرض تقريره الفرعي.

mainReport.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="demo" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="381b6277-2f70-46c8-9c37-6c8ac5f47857">
    <property name="net.sf.jasperreports.export.csv.exclude.origin.band.1" value="pageHeader"/>
    <property name="net.sf.jasperreports.export.csv.exclude.origin.band.2" value="pageFooter"/>
    <property name="net.sf.jasperreports.export.csv.exclude.origin.band.summary" value="summary"/>
    <property name="net.sf.jasperreports.export.xls.exclude.origin.band.1" value="pageHeader"/>
    <property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter"/>
    <property name="net.sf.jasperreports.export.xls.exclude.origin.keep.first.band.2" value="columnHeader"/>
    <property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
    <property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
    <property name="net.sf.jasperreports.export.xls.exclude.origin.band.summary" value="summary"/>
    <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"/>
    <parameter name="subreport" class="net.sf.jasperreports.engine.JasperReport"/>
    <parameter name="title" class="java.lang.String"/>
    <parameter name="username" class="java.lang.String"/>
    <parameter name="logo" class="java.io.InputStream"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="resultEntities" class="java.util.List"/>
    <field name="sponsorName" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="42" splitType="Stretch">
            <textField>
                <reportElement uuid="19b3ea11-765d-4e11-b823-6f2dffe149ef" x="200" y="2" width="310" height="30"/>
                <textElement textAlignment="Center">
                    <font size="18" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression>
            </textField>
            <image onErrorType="Blank">
                <reportElement uuid="827deabf-52f4-4e2d-a700-cb25e0d17f8d" x="0" y="-8" width="200" height="50"/>
                <imageExpression><![CDATA[$P{logo}]]></imageExpression>
            </image>
        </band>
    </title>
    <pageHeader>
        <band height="17" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="21" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="130" splitType="Stretch">
            <staticText>
                <reportElement uuid="e09c8f6a-0d7a-44a7-b050-5ae9e3d6cd1a" mode="Opaque" x="0" y="0" width="110" height="20" forecolor="#000000" backcolor="#FFFFFF"/>
                <textElement>
                    <font size="11" isBold="true"/>
                </textElement>
                <text><![CDATA[Sponsor Name:]]></text>
            </staticText>
            <textField>
                <reportElement uuid="5781f4ef-2af7-4144-82ff-27cc707099b7" x="120" y="0" width="277" height="20"/>
                <textElement>
                    <font size="12" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{sponsorName}]]></textFieldExpression>
            </textField>
            <subreport>
                <reportElement uuid="381339b0-ca91-41f6-a625-4281afd9e52a" x="0" y="80" width="551" height="46"/>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{resultEntities})]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{subreport}]]></subreportExpression>
            </subreport>
            <textField>
                <reportElement uuid="95763471-cdf9-4131-9496-05b9121ec189" x="120" y="20" width="277" height="20"/>
                <textElement>
                    <font size="12" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{username}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="08ea8903-a99a-4e09-84c4-012df07d73df" mode="Opaque" x="0" y="20" width="110" height="20" forecolor="#000000" backcolor="#FFFFFF"/>
                <textElement>
                    <font size="11" isBold="true"/>
                </textElement>
                <text><![CDATA[Username:]]></text>
            </staticText>
        </band>
        <band height="111">
            <break>
                <reportElement uuid="58154019-f6fe-4e30-bd85-e959cfb79c8c" isPrintRepeatedValues="false" x="0" y="4" width="100" height="1"/>
            </break>
        </band>
    </detail>
    <pageFooter>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement uuid="247f9650-33e1-49aa-9d48-2b53a63412ec" x="433" y="0" width="80" height="20"/>
                <textElement textAlignment="Right">
                    <font size="10" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
            </textField>
            <textField evaluationTime="Report">
                <reportElement uuid="99aea93f-321e-49d5-84e9-356d3bf3d6a2" x="513" y="0" width="40" height="20"/>
                <textElement>
                    <font size="10" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
            <textField pattern="EEEEE dd MMMMM yyyy">
                <reportElement uuid="8be76444-ca98-43a1-be6e-8ccc5b581905" x="0" y="0" width="197" height="20"/>
                <textElement>
                    <font size="10" isBold="false"/>
                </textElement>
                <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
            </textField>
        </band>
    </pageFooter>
    <summary>
        <band height="50" splitType="Stretch">
            <staticText>
                <reportElement uuid="e09c8f6a-0d7a-44a7-b050-5ae9e3d6cd1a" x="80" y="20" width="330" height="30" forecolor="#008080"/>
                <textElement textAlignment="Center" rotation="None" markup="styled">
                    <font size="18" isBold="true"/>
                </textElement>
                <text><![CDATA[End of Report]]></text>
            </staticText>
        </band>
    </summary>
</jasperReport>

Subreport-1

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="demo_address" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="5e467d97-e040-4786-bd94-5625de268971">
    <style name="Title" fontName="Arial" fontSize="26" isBold="true" pdfFontName="Helvetica-Bold"/>
    <style name="SubTitle" forecolor="#666666" fontName="Arial" fontSize="18"/>
    <style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/>
    <style name="Detail" fontName="Arial" fontSize="12"/>
    <parameter name="subreport2" class="net.sf.jasperreports.engine.JasperReport"/>
    <field name="iTID" class="java.lang.String"/>
    <field name="allocationNumber" class="java.lang.String"/>
    <field name="partDescription" class="java.lang.String"/>
    <field name="serialNumber" class="java.lang.String"/>
    <field name="partName" class="java.lang.String"/>
    <field name="stockType" class="java.lang.String"/>
    <field name="dispatchLocation" class="java.lang.String"/>
    <field name="partNumberSubEntities" class="java.util.List"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="5" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="50">
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="0" y="5" width="120" height="40" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Option/Part No]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="231" splitType="Stretch">
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement uuid="77b324a2-4b82-4988-acf6-d93b68adfa1a" x="0" y="0" width="120" height="20"/>
                <box>
                    <bottomPen lineWidth="0.5"/>
                </box>
                <textElement textAlignment="Justified">
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{partName}]]></textFieldExpression>
            </textField>
            <subreport>
                <reportElement uuid="381339b0-ca91-41f6-a625-4281afd9e52a" positionType="Float" x="0" y="20" width="551" height="46"/>
                <subreportParameter name="subreport2"/>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{partNumberSubEntities})]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{subreport2}]]></subreportExpression>
            </subreport>
        </band>
    </detail>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

تقرير فرعي

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version last-->
<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="demo_address" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="5e467d97-e040-4786-bd94-5625de268971">
    <style name="Title" fontName="Arial" fontSize="26" isBold="true" pdfFontName="Helvetica-Bold"/>
    <style name="SubTitle" forecolor="#666666" fontName="Arial" fontSize="18"/>
    <style name="Column header" forecolor="#666666" fontName="Arial" fontSize="12" isBold="true"/>
    <style name="Detail" fontName="Arial" fontSize="12"/>
    <field name="iTID" class="java.lang.String"/>
    <field name="allocationNumber" class="java.lang.String"/>
    <field name="partDescription" class="java.lang.String"/>
    <field name="serialNumber" class="java.lang.String"/>
    <field name="partName" class="java.lang.String"/>
    <field name="stockType" class="java.lang.String"/>
    <field name="dispatchLocation" class="java.lang.String"/>
    <field name="partNumberSubEntities" class="java.util.List"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="5" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="50">
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="0" y="0" width="70" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Stock Type]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="70" y="0" width="80" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Option/Part No]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="150" y="0" width="86" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Description]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="236" y="0" width="60" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[TID]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="296" y="0" width="80" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Serial No]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="0fd796af-139d-45ff-8eee-fad16f65c526" x="376" y="0" width="74" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Allocation No]]></text>
            </staticText>
            <staticText>
                <reportElement uuid="fb4084da-6bd7-4534-8f2e-bf13a976e52f" x="450" y="0" width="104" height="45" backcolor="#CFCFCF"/>
                <box>
                    <topPen lineWidth="1.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="1.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="SansSerif" size="9" isBold="true" isItalic="false" isUnderline="false"/>
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <text><![CDATA[Dispatch Location]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="27" splitType="Stretch">
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement uuid="77b324a2-4b82-4988-acf6-d93b68adfa1a" x="0" y="0" width="70" height="20"/>
                <box>
                    <bottomPen lineWidth="0.5"/>
                </box>
                <textElement textAlignment="Left">
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{stockType}]]></textFieldExpression>
            </textField>
            <textField isStretchWithOverflow="true" isBlankWhenNull="true">
                <reportElement uuid="77b324a2-4b82-4988-acf6-d93b68adfa1a" x="70" y="0" width="80" height="20"/>
                <box>
                    <bottomPen lineWidth="0.5"/>
                </box>
                <textElement textAlignment="Justified">
                    <paragraph lineSpacing="Proportional"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{partName}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="227" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

رمز جافا للتصدير

Map<String, Object> map = new HashMap<String, Object>();
        map.put("title", title);
        map.put("username", user);
        map.put("usergroup", usergroup);
        map.put("startDate", startDate);
        map.put("endDate", endDate);
        map.put("sponsorName", "Barclays");
        map.put("logo", GenericExporter.class.getResourceAsStream("/res/logo.gif"));

        // get collection datasource
        JRBeanCollectionDataSource jrBeanCollectionDataSource = new JRBeanCollectionDataSource(resultObjects);
        // compile master and sub
        InputStream masterReportStream = GenericExporter.class.getResourceAsStream(masterReport.getFilename());
        InputStream subReportStream = GenericExporter.class.getResourceAsStream(subReport.getFilename());
        InputStream subsubstream = GenericExporter.class.getResourceAsStream("/res/DetailedStockReportSub_Sub.jrxml");

        JasperReport masterCompile = JasperCompileManager.compileReport(JRXmlLoader.load(masterReportStream));
        JasperReport subCompiled = JasperCompileManager.compileReport(JRXmlLoader.load(subReportStream));
        JasperReport subsubcompiled = JasperCompileManager.compileReport(JRXmlLoader.load(subsubstream));

        // put sub report in map
        map.put("subreport", subCompiled);
        map.put("subreport2", subsubcompiled);

        // fill report
        JasperPrint jasperFillRepor = JasperFillManager.fillReport(masterCompile, map, jrBeanCollectionDataSource);




            JRPdfExporter jrPdfExporter = new JRPdfExporter();
            jrPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperFillRepor);
            jrPdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outpuStream);
            // run export
            jrPdfExporter.exportReport();

            return new ByteArrayInputStream(outpuStream.toByteArray());

الكود ينفذ بشكل جيد ، لا مشكلة. ولكن إذا نظرت إلى PDF ، فلا يحتوي على الجدول الموجود في تقرير فرعي.

سيكون موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

Jasper هو حماقة. لا يوجد تحكم مناسب على الجداول. حتى أنه لا يعمل بشكل صحيح مع التقارير الفرعية.

انتهى بي الأمر باستخدام Itext ، وهو أفضل بكثير ولديك المزيد من التحكم في كيفية عرض البيانات التي تريد عرضها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top