咱們在前面的章節中產生的JasperReport模板(JRXML文件)。這個文件不能直接用於生成報告。它必須被編譯成JasperReport的「本地二進制"格式,稱爲Jasperfile。在編制咱們把JasperDesign對象轉換成JasperReport的對象:java
接口net.sf.jasperreports.engine.design.JRCompiler編譯過程當中起着核心的一部分。這個接口有根據用於報表表達式語言,它能夠只要編譯器能夠實如今運行時計算它被用Java編寫的,Groovy,JavaScript的或任何其餘腳本語言的幾個實現。咱們能夠經過如下兩種方式編譯JRXML文件:編程
提供編程編譯。app
編譯經過ANT任務。yii
JasperReports的API提供了一個門面類net.sf.jasperreports.engine.JasperCompileManager用於編譯JasperReport。這個類包含幾個公共靜態方法編制的報告模板。模板的源能夠從文件,輸入流,內存中的對象。ui
該jrxml文件(jasper_report_template.jrxml)的內容以下。它被保存在目錄 C:\tools\jasperreports-5.0.1\test:spa
<?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"> <font