一、Getting Started
JasperReports的报表是用xml文件定义的,按照习惯这个xml文件以.jrxml作为扩展名,一个典型的jrxml文件包括下列元素:
1、<jasperReport>根元素
2、<title>它的内容只在报表开始时被打印一次
3、<pageHeader>它的内容在报表的每一页都被打印一次
4、<detail>报表的主体
5、<band>定义了一个报表区域,以上所有元素都包含一个
band元素作为自己的子元素
二、除了根元素之外,所有的元素都是可选的
下面是jrxml文件的一个简单的例子,它生成了一个简单的报表,这个报表仅仅打印出一个字符串"HelloWorld!"
HelloWorld.jrxml
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="HelloWorld">
<detail>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200" height="20"/>
<text><![CDATA[Hello World!]]</text>
</staticText>
</band>
</detail>
</jasperReport>
说明:在这个例子中我们省略了可选的其他元素,<staticText>元素描述了报告中的静态文本,正如所看到的一样它有一个唯一的子元素<text>,这个元素定义了要被显示的文本。
三、程序
package purerock.jasper;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.*;
import net.sf.jasperreports.engine.util.JRLoader;
import java.io.*;
public class FirstJasperReports {
static String fileName="HelloWorld.jrxml";
public static void main(String[] args)throws Exception{
long startTime=System.currentTimeMillis();
//将报表的定义文件HelloWorld.jrxml编译成HelloWorld.jasper文件
String jasperFile=JasperCompileManager.compileReportToFile(fileName);
//向HelloWorld.jasper文件中填充数据,这一步将生产出HelloWorld .jrprint文件
String jrprintFile=JasperFillManager.fillReportToFile(jasperFile,null,new JREmptyDataSource());
//将.jrprint文件转换成HTML格式
JasperExportManager.exportReportToHtmlFile(jrprintFile);
//将.jrprint文件转换成PDF格式
JasperExportManager.exportReportToPdfFile(jrprintFile);
//将.jrprint文件转换成XML格式
JasperExportManager.exportReportToXmlFile(jrprintFile,false);
//将.jrprint文件转换成XLS格式(即Excel文件),需要用到POI类库.
File sourceFile = new File(jrprintFile);
JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile);
File destFile = new File(sourceFile.getParent(), jasperPrint.getName() + ".xls");
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporter.exportReport();
long endTime=System.currentTimeMillis();
long time=(endTime-startTime)/1000;
System.out.println("success with "+time+" s");
}
}
四、编译及运行程序所需要的类库
1、jasperreports-2.0.2.jar
2、commons-digester-1.7.jar
3、commons-collections-2.1.jar
4、commons-logging-1.0.2.jar
5、commons-beanutils-1.7.jar
6、itext-1.3.1.jar
7、poi-3.0.1-FINAL-20070705.jar
注、以上大多数jar文件都是apache开源组织的开源组件,我用的就是这些,版本号可以不一样。
五、运行程序可以看到JasperReports依据HelloWorld.jrxml文件自动为我们生成了各式各样的文件:html、pdf、xls、xml、jasper。