Java报表开发技术—JasperReports开发流程

时间:2021-10-07 03:19:01

使用JasperReports报表开发工具,报表引擎的整个工作过程如下图所示:

Java报表开发技术—JasperReports开发流程

                                               JasperReports 报表引擎工作原理图

        为了让读者进一步了解上述原理,先写一段简单的代码进行分析,我们假设已经完成了JRXML报表的创建工作,下述代码是通过这个模板文件创建一个JasperReports报表,程序的具体代码如下:

/**
*
* @author 源神
* 注明:开头省略了import ...
*/
public class HelloWorld {
public static void main(String[] args) {
try {
//步骤(1) 加载报表设计模块文件
JasperDesign jasperDesign = JRXmlLoader.load("HelloWord.jrxml");
//步骤(2) 编译报表模板
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
//步骤(3) 填充报表
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(),
new JREmptyDataSource());
//步骤(4) 导出报表
JasperExportManager.exportReportToPdfFile(jasperPrint, "HelloWord.pdf");
} catch (JRException e) {
e.printStackTrace();
}
}
}

请对JasperReports 报表引擎工作原理图,分析上述代码

步骤 (1):

调用JRXmlLoader中的load()方法来加载这个模版文件,这个方法可以把JRXML模版文件解析为JasperDesign对象。

步骤 (2):

得到对象JasperDesign对象以后,就可以对这个对象进行编译,通过JasperCompileManager提供的compileReport方法就可以编译得到JasperReport模板对象。

步骤 (3):

在完成模板的编译工作以后,就可以得到一个JasperReport类型的对象,通过向这个对象中填充数据,就可以得到完整的JasperReports报表。在填充报表模板的时候,需要调用JasperFillManager提供的fillReport方法,这个方法可以填充指定的报表模板,并返回一个JasperPrint报表对象;在(3)这行代码中,填充模板使用的参数是一个空的HashMap对象,使用的数据源是一个空的数据源。

步骤 (4):

模板填充工作完成以后,就得到一个JasperPrint类型的报表对象,这个对象就是已经成功创建的报表,可以利用JasperReports内置的查看工具查看这个报表,也可以通过打印、导出文件的方式进行查看。在上述代码中,我们调用JasperExportManager中的方法,选择把报表导出到PDF文件中。


JasperReports 核心类
类    名 作    用
net.sf.jasperreports.engine.design.JasperDesign 原始的模版对象,可以通过解析JRXML文件得到,也可以通过JasperReports提供的API动态创建
net.sf.jasperreports.engine.JasperReport 经过编译的报表模板对象
net.sf.jasperreports.engine.JasperCompileManager 编译原始模板对象,返回JasperReport对象
net.sf.jasperreports.engine.JasperPrint

报表对象,可以通过填充报表模板得到该对象

net.sf.jasperreports.engine.JRDataSource 要向报表模板中填充的数据
net.sf.jasperreports.engine.JRResultSetDataSource 要向报表模板中填充的关系数据库数据
net.sf.jasperreports.engine.data.JRBeanArrayDataSource 要向报表模板中填充的JavaBean数据
net.sf.jasperreports.engine.JREmptyDataSource 要向报表模板中填充的空数据,主要用来调试程序
net.sf.jasperreports.engine.JasperFillManager 填充报表模板,返回JasperPrint对象
net.sf.jasperreports.engine.JasperPrintManager 打印报表文件
net.sf.jasperreports.engine.JasperExportManager 导出报表文件,支持PDFHTMLCSVXML等格式
net.sf.jasperreports.view.JRView 用来查看使用JasperReports类库创建的报表
net.sf.jasperreports.view.JasperViewer 用来查看报表的工具
net.sf.jasperreports.view.JasperDesignViewer 用来查看报表模板的工具
net.sf.jasperreports.engine.util.JRLoader 用来加载序列化对象
net.sf.jasperreports.engine.util.JRSaver 用来序列化对象
net.sf.jasperreports.engine.xml.JRXmlLoader 加载JRXML文件,返回JasperDesign对象

参考书籍:Java报表开发技术深入解析