我们在前面的章节中产生的JasperReport模板(JRXML文件)。这个文件不能直接用于生成报告。它必须被编译成JasperReport的“本地二进制"格式,称为Jasperfile。在编制我们把JasperDesign对象转换成JasperReport的对象:

JasperReport编译报表设计5

接口net.sf.jasperreports.engine.design.JRCompiler编译过程中起着核心的一部分。这个接口有根据用于报表表达式语言,它可以只要编译器可以实现在运行时计算它被用Java编写的,Groovy,JavaScript的或任何其他脚本语言的几个实现。我们可以通过以下两种方式编译JRXML文件:

  1. 提供编程编译。

  2. 编译通过ANT任务。

JRXML提供编程编译

JasperReports的API提供了一个门面类net.sf.jasperreports.engine.JasperCompileManager用于编译JasperReport。这个类包含几个公共静态方法编制的报告模板。模板的源可以从文件,输入流,内存中的对象。

该jrxml文件(jasper_report_template.jrxml)的内容如下。它被保存在目录 C:\tools\jasperreports-5.0.1\test:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<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="jasper_report_template" language="groovy" pageWidth="595"
pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
topMargin="20" bottomMargin="20">

    <queryString>
	<![CDATA[]]>
    </queryString>
    <field name="country" class="java.lang.String">
        <fieldDescription><![CDATA[country]]></fieldDescription>
    </field>
    <field name="name" class="java.lang.String">
        <fieldDescription><![CDATA[name]]></fieldDescription>
    </field>
    <columnHeader>
     <band height="23">
	<staticText>
	    <reportElement mode="Opaque" x="0" y="3" width="535"
		 height="15" backcolor="#70A9A9" />
	    <box>
	        <bottomPen lineWidth="1.0" lineColor="#CCCCCC" />
	    </box>
	    <textElement />
	    <text><![CDATA[]]> </text>
	</staticText>
	<staticText>
	    <reportElement x="414" y="3" width="121" height="15" />
	    <textElement textAlignment="Center"
	        verticalAlignment="Middle">
		<font isBold="true" />
	    </textElement>
	    <text><![CDATA[Country]]></text>
	</staticText>
	<staticText>
	    <reportElement x="0" y="3" width="136" height="15" />
	    <textElement textAlignment="Center"
	        verticalAlignment="Middle"

相关文章: