如何使用Java SE生成多个jasper报告
我已经成功创建了一份只打印一页的JasperReports报告。但是,我需要在一个PDF中打印多个报告。下面是打印单页报告的代码,以及使用不同数据多次打印所需的XML。对于每个padNumber
我想要一个PDF格式的页面。如果有padNumberArray[] = {2,5,6,8}
,那么Jasper report PDF将显示4页的报告,其中包含相应的padnumber
Java代码:
public void submitBill( String padNumber){
JOptionPane.showMessageDialog(null, "Connected FROM BC");
try{
JasperReport jasperReport = JasperCompileManager.compileReport("C:\\report3.jrxml");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("PADNUMBER",padNumber);
JRDataSource dataSource = new JREmptyDataSource();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
JasperViewer.viewReport(jasperPrint);
File outDir = new File("C:/jasperoutput");
outDir.mkdirs();
}catch(Exception e){
System.out.println(e);
}
}
模板:
<?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="report3" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ac96d847-7849-458c-9018-3c6d0017a0ca">
<parameter name="PADNUMBER" class="java.lang.String">
<defaultValueExpression><![CDATA[$F{padnum}]]></defaultValueExpression>
</parameter>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["C:\\"]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[select items,price,padnum from RegisterBook where RegisterBook.padnum = $P{PADNUMBER}]]>
</queryString>
<field name="items" class="java.lang.Object"/>
<field name="price" class="java.lang.Object"/>
<field name="padnum" class="java.lang.String"/>
<variable name="items_1" class="java.lang.Integer" resetType="Page" calculation="Count">
<variableExpression><![CDATA[$F{items}]]></variableExpression>
</variable>
<variable name="price_1" class="java.lang.Integer" resetType="Page" calculation="Count">
<variableExpression><![CDATA[$F{price}]]></variableExpression>
</variable>
<variable name="padnum_1" class="java.lang.Integer" resetType="Page" calculation="Count">
<variableExpression><![CDATA[$F{padnum}]]></variableExpression>
</variable>
<columnHeader>
<band height="23" splitType="Stretch">
<staticText>
<reportElement x="54" y="0" width="357" height="20" uuid="d68fb7b5-84cf-41c4-a3ec-98ab9fd2754b"/>
<textElement>
<font fontName="Times New Roman" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Items]]></text>
</staticText>
<staticText>
<reportElement x="411" y="0" width="144" height="20" uuid="46bc50b9-eb17-4ffe-b3c3-a8397350b4ba"/>
<textElement>
<font fontName="Times New Roman" size="14" isBold="true"/>
</textElement>
<text><![CDATA[Price]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="54" y="0" width="357" height="20" uuid="21f0b3e3-eb37-40c4-8fc2-3fa00ad28413"/>
<textElement>
<font fontName="Times New Roman" size="12"/>
</textElement>
<textFieldExpression><![CDATA[""+$F{items}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="411" y="0" width="144" height="20" uuid="f4abff45-a9f5-42a1-be3f-f24363fa128d"/>
<textElement>
<font fontName="Times New Roman" size="12"/>
</textElement>
<textFieldExpression><![CDATA[""+$F{price}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
共 (0) 个答案