一、简单例程
JasperReports 是现在用的比较广泛的一个报表引擎,它的模版是一个以".jrxml"为后缀的XML文件。一个典型的jrxml文件包含的元素有:
<jasperReport>
-根元素。<title>
-标题,只在报表的开头打印一次。<pageHeader>
-页眉。<detail>
-报表的详细内容。<pageFooter>
-页脚<band>
- 定义报表的一部分,以上所有的标签里面都包含了这个标签作为其唯一的元素。
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="Simple_Report">
<detail>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200" height="20"/>
<text><![CDATA[Hello World!]]></text>
</staticText>
</band>
</detail>
</jasperReport>
jrxml文件必须经过“编译”成二进制格式的文件才能被JasperReports使用,我们可以调用net.sf.jasperreports.engine.JasperCompileManager里面的compileReport()方法去“编译”jrxml文件。 这里有很多个compileReport()的重载方法。但是这里我们只用有一个“String”参数的方法。如下所示:
public class JasperReportsIntro
{
public static void main(String[] args)
{
JasperReport jasperReport;
JasperPrint jasperPrint;
try
{
jasperReport = JasperCompileManager.compileReport(
"reports/jasperreports_demo.jrxml");
jasperPrint = JasperFillManager.fillReport(
jasperReport, new HashMap(), new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(
jasperPrint, "reports/simple_report.pdf");
}
catch (JRException e)
{
e.printStackTrace();
}
}
}
一个jrxm文件只需要编译一次,但是在这个简单的例子里面程序每执行一次jrxml文件就会编译一次。 在报表生成之前,我们需要调用net.sf.jasperreports.engine.JasperFillManager类中的fillReport()方法去"填"数据。同样,这里也有很多个 fillReport()重载方法,这里需要调用的是拥有三个参数的 fillReport()方法。 三个参数分别是:net.sf.jasperreports.engine.JasperReport实例对象; java.util.HashMap 对象,可以包含任何数据; net.sf.jasperreports.engine.JRDataSource对象.例程中 如下所示:
jasperPrint = JasperFillManager.fillReport(
jasperReport, new HashMap(), new JREmptyDataSource());
因为这个报表没有任何数据,所以这里只传了一个空的HashMap作为第二个参数和一个net.sf.jasperreports.engine.JREmptyDataSource对象作为第三个参数。最后这里报表导出为PDF文件。 如下:
JasperExportManager.exportReportToPdfFile(
jasperPrint, "reports/simple_report.pdf");
以上例子所需jar包如下:
二、文件解析
JasperReport开发过程中会接触到三种文件类型,它们分别是“.jrxml”、“.jasper”和“.jrprint”;
1.“.jrxml”文件是设计报表模版时的文件,我们在开始阶段设计好需要的报表模版;
2.“.jasper”文件是程序编译jrxml后的二进制文件,程序在运行时把数据写入到这种文件里面;
3.".jrprint“文件是输出时候程序调用的文件,无论输出什么格式的报表,都是通过把jasper文件转换为jrprint文件,然后输入为我们需要的格式的报表文件。