使用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文件中。
类 名 | 作 用 |
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 | 导出报表文件,支持PDF、HTML、CSV、XML等格式 |
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对象 |