任何報(bào)告工具的主要目的是為了生產(chǎn)出高品質(zhì)的文檔。舉報(bào)填充過(guò)程有助于報(bào)告工具通過(guò)操縱數(shù)據(jù)集來(lái)實(shí)現(xiàn)這一目標(biāo)。需要報(bào)表填充過(guò)程的主要輸入是:
報(bào)表模板:這是實(shí)際的JasperReport文件
報(bào)告參數(shù):這些所傳遞的報(bào)表填充時(shí)間給引擎基本上都是命名的值。我們將在報(bào)表參數(shù)章節(jié)討論。
數(shù)據(jù)源:我們可以從一系列像一個(gè)SQL查詢,XML文件,CSV文件,一個(gè)HQL(Hibernate查詢語(yǔ)言)查詢,Java Beans的集合等數(shù)據(jù)源的填補(bǔ)Jasper這個(gè)文件將詳細(xì)討論在報(bào)表數(shù)據(jù)源的篇章。
這個(gè)過(guò)程產(chǎn)生的輸出。jrprint是一個(gè)文檔隨時(shí)查看,打印或?qū)С鰹槠渌袷健M庥^類net.sf.jasperreports.engine.JasperFillManager通常用于填充一個(gè)報(bào)表模板與數(shù)據(jù)。這個(gè)類有各種fillReportXXX()方法,填補(bǔ)報(bào)表模板(模板可以位于磁盤上,從輸入流采集,或直接提供的內(nèi)存)。
主要有兩類在此外觀類fillReportXXX()方法:
第一種類型,接收java.sql.Connection對(duì)象作為第三個(gè)參數(shù)。大多數(shù)情況下報(bào)表都充滿了從關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。這是通過(guò):
通過(guò)JDBC連接到數(shù)據(jù)庫(kù)。
包括報(bào)表模板中的SQL查詢。
JasperReports引擎使用傳入的連接并執(zhí)行SQL查詢。
因此,一個(gè)報(bào)表數(shù)據(jù)源產(chǎn)生填充的報(bào)告。
第二類,收到net.sf.jasperreports.engine.JRDataSource對(duì)象,當(dāng)提供其他形式的數(shù)據(jù)來(lái)填補(bǔ)。
讓我們來(lái)寫一個(gè)報(bào)表模板。在JRXML文件(C: oolsjasperreports-5.0.1 estjasper_report_template.jrxml) 的內(nèi)容如下:
<?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 isBold="true" /> </textElement> <text><![CDATA[Name]]></text> </staticText> </band> </columnHeader> <detail> <band height="16"> <staticText> <reportElement mode="Opaque" x="0" y="0" width="535" height="14" backcolor="#E5ECF9" /> <box> <bottomPen lineWidth="0.25" lineColor="#CCCCCC" /> </box> <textElement /> <text><![CDATA[]]> </text> </staticText> <textField> <reportElement x="414" y="0" width="121" height="15" /> <textElement textAlignment="Center" verticalAlignment="Middle"> <font size="9"