简体   繁体   中英

multiple files in Jasper report

I am using this code to call my jrxml file in Jasper:

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;


public class Jasperreports {

    public static void main(String[] args) {
        Connection conn = null;
        String iphost = "myhostip";
        String dbsid = "DISAD";
        String username = "MYUSERNAME";
        String password = "mypassword";
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@" + iphost + ":1521:" + dbsid, username, password);
            int count = 0;
            JasperReport jasperReport = JasperCompileManager.compileReport("Advice2.jrxml");
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), conn);
            JasperExportManager.exportReportToPdfFile(jasperPrint, "sample" + count + ".pdf");
            count++;
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

My jrxml file is:

<?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="Advice" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="253171d0-c1c3-465d-a40b-dd200cc3fca8">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString language="SQL">
        <![CDATA[select h.GROUP_DESC, b.foracid ACCOUNT_NUMBER , a.tran_id, b.ACCT_NAME ACCOUNT_NAME,j.NAME,COALESCE(i.EMAIL, n'No email Address')EMAIL, b.schm_code,e.SCHM_DESC, b.SOL_ID, d.SOL_DESC,
COALESCE(c.ADDRESS_LINE1, n'No Address')ADDRESS_LINE1,c.STATE, g.localetext, f.VALUE, f.categoryid, a.TRAN_DATE TRANSACTION_DATE,a.VALUE_DATE,a.TRAN_PARTICULAR TRAN_PARTICULARS,
a.REF_NUM CHQ_REFERENCE, A.TRAN_CRNCY_CODE CURRENCY, a.RATE,
max(case when a.PART_TRAN_TYPE = 'D' then a.TRAN_AMT else 0.00 end) DEBIT_AMOUNT,
max(case when a.PART_TRAN_TYPE = 'C' then a.TRAN_AMT else 0.00 end ) CREDIT_AMOUNT
from TBAADM.DAILY_TRAN_DETAIL_TABLE a, TBAADM.GENERAL_ACCT_MAST_TABLE b, crmuser.address c, tbaadm.service_outlet_table d,
TBAADM.GEN_SCHM_PARM_TABLE e, crmuser.categories f, crmuser.category_lang g, TBAADM.SOL_GROUP_CONTROL_TABLE h, CRMUSER.PHONEEMAIL i,
crmuser.accounts j
where a.acid = b.acid(+)
and a.CUST_ID = c.orgkey(+) and C.ADDRESSCATEGORY = 'Mailing'
and B.SOL_ID = D.SOL_ID(+)
and b.schm_code = E.SCHM_CODE(+)
and c.state = f.value(+)
and F.CATEGORYID = G.CATEGORYID
and b.foracid is not null
and b.acct_name is not null
and B.BANK_ID = H.SOL_GROUP_ID(+)
and B.CUST_ID = I.ORGKEY(+)
and B.CUST_ID = j.orgkey(+)
and rownum <=10
group by b.foracid, a.tran_date, a.value_date, a.tran_particular, a.ref_num, A.TRAN_CRNCY_CODE,
b.acct_name, b.schm_code, b.sol_id,COALESCE(c.ADDRESS_LINE1, n'No Address'),c.STATE, d.sol_desc, e.SCHM_DESC, f.value, f.categoryid,
g.localetext, a.tran_id, H.GROUP_DESC, COALESCE(I.EMAIL, n'No email Address'), a.RATE, j.NAME
order by B.FORACID asc]]>
    </queryString>
    <field name="GROUP_DESC" class="java.lang.String"/>
    <field name="ACCOUNT_NUMBER" class="java.lang.String"/>
    <field name="TRAN_ID" class="java.lang.String"/>
    <field name="ACCOUNT_NAME" class="java.lang.String"/>
    <field name="NAME" class="java.lang.String"/>
    <field name="EMAIL" class="java.lang.String"/>
    <field name="SCHM_CODE" class="java.lang.String"/>
    <field name="SCHM_DESC" class="java.lang.String"/>
    <field name="SOL_ID" class="java.lang.String"/>
    <field name="SOL_DESC" class="java.lang.String"/>
    <field name="ADDRESS_LINE1" class="java.lang.String"/>
    <field name="STATE" class="java.lang.String"/>
    <field name="LOCALETEXT" class="java.lang.String"/>
    <field name="VALUE" class="java.lang.String"/>
    <field name="CATEGORYID" class="java.math.BigDecimal"/>
    <field name="TRANSACTION_DATE" class="java.sql.Timestamp"/>
    <field name="VALUE_DATE" class="java.sql.Timestamp"/>
    <field name="TRAN_PARTICULARS" class="java.lang.String"/>
    <field name="CHQ_REFERENCE" class="java.lang.String"/>
    <field name="CURRENCY" class="java.lang.String"/>
    <field name="RATE" class="java.math.BigDecimal"/>
    <field name="DEBIT_AMOUNT" class="java.math.BigDecimal"/>
    <field name="CREDIT_AMOUNT" class="java.math.BigDecimal"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="28" splitType="Stretch">
            <staticText>
                <reportElement uuid="cf153a5b-1afb-441b-b840-f2a23274363d" x="136" y="8" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[Transaction Advices]]></text>
            </staticText>
        </band>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="7" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="301" splitType="Stretch">
            <textField>
                <reportElement uuid="35a120b1-e836-4415-9663-92ab52b751f5" x="0" y="0" width="212" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{NAME}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="4efa323d-f77b-45d1-943a-042dfd78abae" x="0" y="20" width="212" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{ADDRESS_LINE1}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="d5a0d2b1-998f-4c2d-aa26-f83ca078f5f3" x="0" y="40" width="212" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{STATE}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement uuid="cca1db34-ad68-4d09-a28e-5af6b77bdd24" x="0" y="60" width="212" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{EMAIL}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="d92049c4-3cfe-4be8-beb4-240615dc0e8b" x="136" y="127" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[ACCOUNT_NAME]]></text>
            </staticText>
            <textField>
                <reportElement uuid="0a513b59-c441-405e-96b9-85d2404a82fc" x="256" y="127" width="249" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{ACCOUNT_NAME}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="7128a15d-f84a-46cd-b2f0-202db8a556bf" x="136" y="147" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[SOL_ID]]></text>
            </staticText>
            <textField>
                <reportElement uuid="1e47e77d-3b0f-4018-ac81-2f8673c0d00e" x="256" y="147" width="249" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{SOL_ID}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="de11f45c-18ee-413e-8e8d-74da809e9e63" x="136" y="167" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[ACCOUNT_NUMBER]]></text>
            </staticText>
            <textField>
                <reportElement uuid="056f9770-a3a7-4a5a-8582-23a88cd19251" x="256" y="167" width="249" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{ACCOUNT_NUMBER}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="2ddf4f57-0132-4864-b19c-773e69eff4a3" x="136" y="187" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[DEBIT_AMOUNT]]></text>
            </staticText>
            <textField>
                <reportElement uuid="67658e95-18e3-4877-b717-a0202c36d555" x="256" y="187" width="249" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{DEBIT_AMOUNT}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="6e7974d6-a2e6-4d30-8823-212976e132e6" x="136" y="207" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[CREDIT_AMOUNT]]></text>
            </staticText>
            <textField>
                <reportElement uuid="e34eb773-f0a6-4ee5-8f50-416cd1b95a16" x="256" y="207" width="249" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{CREDIT_AMOUNT}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement uuid="63292bb9-3ab7-44d1-9fd1-da9f53fcd9a3" x="136" y="228" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[TRAN_PARTICULARS]]></text>
            </staticText>
            <textField>
                <reportElement uuid="1a02a640-77b2-4120-b14b-b67c8dcfd2b7" x="256" y="227" width="249" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$F{TRAN_PARTICULARS}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

I am getting Just One file .pdf with all the records. How can I generate One file Per one record so that I have a different file for every report?

That's just the standard behaviour of JasperReports. Detail band will be repeated once per record that your SQL query returns.

So, in case you want each record in a different PDF file, you have two options:

  1. Change your SQL query so it returns just one record, using parameters so you can control this.
  2. Get the data of the SQL query in java and pass that information to JasperReport as parameters or using a java object dataset. This example is quite old but shows how to do it.

Of course you will need to iterate through the records generating one call per record for both approaches.

Hope that helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM