JasperReport是一個(gè)純Java庫(kù),而不是一個(gè)獨(dú)立的應(yīng)用程序。它不能單獨(dú)運(yùn)行,因此它需要被嵌入到另一個(gè)客戶端或服務(wù)器端的Java應(yīng)用程序。因?yàn)樗腔贘ava,它可以在任何支持Java的平臺(tái)(JDK1.3及以上)上運(yùn)行。所有JasperReports的功能是聚集在一個(gè)JAR文件中,一般名稱為:jasperreports-x.x.x.jar。JasperReport庫(kù)鏈接:這個(gè)JAR文件必需及可選庫(kù)(壓縮文件)可以從網(wǎng)站上下載。下載最新的版本。
ZIP文件包含JasperReports源代碼,相關(guān)JAR和大量的實(shí)例演示JasperReport功能以及JasperReportsJAR文件。
要開(kāi)始創(chuàng)建我們需要設(shè)置環(huán)境準(zhǔn)備。解壓縮下載的JasperReport ZIP文件到任何位置(在我們的例子中,我們已經(jīng)提取到C: oolsjasperreports-5.0.1)。解壓縮文件的目錄結(jié)構(gòu)如下圖示:
下面是所有目錄的詳細(xì)信息:
build: 包含已編譯的JasperReport類文件。
demo: 包含演示JasperReports功能幾個(gè)方面的各種例子。
dist: 包含的JasperReports-x.x.x.jar文件。將這個(gè)JAR文件添加到CLASSPATH。
docs: 包含了JasperReports的文檔的本地副本。
lib: 包含所需的所有JAR文件,這樣既可以建立JasperReports,并把它用在我們的應(yīng)用程序。
src: 包含了JasperReports的源代碼。
build.xml: Ant構(gòu)建文件構(gòu)建JasperReports的源代碼。如果不打算修改JasperReports,并不需要使用這個(gè)文件,因?yàn)镴asperReports發(fā)布成已編譯的形式。
changes.txt: 一個(gè)文本文件解釋的JasperReports類庫(kù)的當(dāng)前和以前版本之間的差異。
license.txt: 包含LGPL(較寬松通用公共許可證)許可的全文文本文檔。
readme.txt: 一個(gè)文本文件包含有關(guān)如何建立和執(zhí)行提供的示例說(shuō)明。
基本上,我們只使用jasperreports-x.x.x.jar 在lib目錄下的路程和JAR下生成報(bào)表。由于Jasper報(bào)表作為一個(gè)開(kāi)源的工具,如果任何缺陷或錯(cuò)誤執(zhí)行的jasperreports-x.x.x.jar中是公認(rèn)的,我們可以修復(fù)它??并使用build.xml文件再次生成的JAR文件。
要使用JasperReport,需要設(shè)置下列文件到CLASSPATH中:
jasperreports-x.x.x.jar, 其中x.x.x是JasperReports的版本。此目錄下找到 C: oolsjasperreports-x.x.xdist).
lib子目錄中的所有JAR文件 (C: oolsjasperreports-x.x.xlib).
在安裝的時(shí)候,我們使用JasperReport5.0.1版本。在“我的電腦”右鍵單擊并選擇“屬性”,“高級(jí)”選項(xiàng)卡下單擊“環(huán)境變量”按鈕?,F(xiàn)在有了這個(gè)更新的“路徑”變量添加:C: oolsjasperreports-5.0.1distjasperreports-5.0.1.jar;C: oolsjasperreports-5.0.1lib;. 現(xiàn)在,可以創(chuàng)建報(bào)表了。
在本教程中的所有例子中,已經(jīng)使用Ant任務(wù)來(lái)生成報(bào)告。構(gòu)建文件會(huì)自己負(fù)責(zé),包括所有所需的JAR生成報(bào)告。因此,設(shè)定上述的CLASSPATH只會(huì)幫助生成報(bào)表,而無(wú)需使用ANT。
在本教程中的所有例子:
使用簡(jiǎn)單的文本編輯器寫入。
已保存的目錄下 C: oolsjasperreports-5.0.1 estsrccomyiibai.
已編譯并從命令提示符下執(zhí)行,使用Apache Ant。我們將使用它我們將在Ant build.xml文件中的后續(xù)章節(jié)中導(dǎo)入abaseBuild.xml文件。將此文件保存到C: oolsjasperreports-5.0.1 est. 以下是baseBuild.xml文件的內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?> <project name="JasperReportExample" basedir="."> <description>Previews our JasperReport XML Design</description> <property name="file.name" value="jasper_report_template" /> <!-- Directory where the JasperReports project file was extracted needs to be changed to match the local environment --> <property name="jasper.dir" value="../" /> <property name="dist.dir" value="${jasper.dir}/dist" /> <property name="lib.dir" value="${jasper.dir}/lib" /> <property name="src.dir" value="src" /> <property name="classes.dir" value="classes" /> <property name="main-class" value="com.yiibai.HelpMe" /> <path id="classpath"> <pathelement location="./" /> <pathelement location="${classes.dir}" /> <fileset dir="${lib.dir}"> <include name="**/*.jar" /> </fileset> <fileset dir="${dist.dir}"> <include name="**/*.jar" /> </fileset> </path> <target name="compile" depends="clean-sample"> <mkdir dir="${classes.dir}"/> <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" /> </target> <target name="run" depends="compile"> <echo message="Running class : ${main-class}"/> <java fork="true" classname="${main-class}"> <classpath> <path refid="classpath" /> </classpath> </java> </target> <target name="clean-sample"> <delete dir="${classes.dir}" /> <delete file="./${file.name}.jasper" /> <delete file="./${file.name}.jrprint" /> </target> </project>
此文件具有所有必需的目標(biāo),比如清除目錄,編譯java文件,并執(zhí)行類文件。
以下是baseBuild.xml提到的細(xì)節(jié)不同的目錄。假設(shè)當(dāng)前目錄是 C: oolsjasperreports-5.0.1 est):
jasper.dir: 是 C: oolsjasperreports-5.0.1 directory
lib.dir: 是 C: oolsjasperreports-5.0.1lib directory
src.dir: 是 C: oolsjasperreports-5.0.1 estsrc
classes.dir: 是 C: oolsjasperreports-5.0.1 estclasses
main-class: com.yiibai.HelpMe. 這個(gè)類執(zhí)行,如果沒(méi)有類文件名是在命令行中通過(guò)一個(gè)簡(jiǎn)單的類。將此文件保存到 C: oolsjasperreports-5.0.1 estsrccomyiibai.
package com.yiibai; public class HelpMe { public static void main(String[] args) { System.out.println("This is the default class executed." + "Please pass the fully qualified class" + " name to be executed as command line" + " parameter, for example," + " com.yiibai.HelpMe "); } }
還有的類,它們將被用來(lái)編譯JRXML報(bào)表設(shè)計(jì),以填補(bǔ)報(bào)表,打印報(bào)表,導(dǎo)出為PDF,HTML和XML文件,查看生成的報(bào)表和報(bào)表設(shè)計(jì)序號(hào)。
這些類的列表是:net.sf.jasperreports.engine.JasperCompileManager: 用于編譯JRXM