JasperReports(一:基础)

 以下文件参照:Struts2 权威指南

JasperReports共涉及的类:

JasperCompileManager:这是一个与编译有关的类,利用它提供的一些编译方法,允许我们将一个报表设计文档*.jrxml 文件编译成一个二进制的报表文件 *.jasper文件。此外,也允许使用一个JasperDesign 实例(*.jrxml文件在内存中的形式)作为报表设计文件。

JasperFillManager:这个类是用于填充报表的,所谓填充报表就是为报表的数据查询提供数据库连接,给报表的参数设值等。报表填充之前是*.jasper文件,经过填充后就成为了*.jrprint 文件--这就是一份可显示或者可导出成报表的文件。

JasperPrintManager:用于将一个*.jrprint 文件完成打印。

JasperExportManager:用于将可显示的报表导出成各种格式的报表文件,主要导出成pdf、xml 格式的文档。

JasperRunManager:这个类可以直接将*.jasper 文件导出成各种格式的报表文件,只要是导出成pdf、html文档。

JRXxxExporter:这是一系列的文件导出器,他们用于将*.jrprint 文件导出成对应格式的报表文件,例如,JRPDFExporter可将*.jrprint  导出成一个pdf文档。

 

当开发人员生成不同的文件时,不同文件在JasperReports中也有对应的类。不同文件有如下3个类来对应:

JasperDesign:对应报表设计文件在内存中的形式,也就是对应*.jrprint 文件

JasperReport:对应二进制报表文件在内存中的形式,也就是对应*.jasper文件

JasperPrint:对应可显示报表设计文件在内存中的形式,也就是对应*.jrprint文件

 

以下是简单的实例:

所用到的包和iReport 文件都在下面

 

package testone;

import javax.swing.JFrame;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JRViewer;

public class MyCompile {

	/**
	 * @param args
	 * @throws Exception 
	 * 开发步骤:
	 * 1.开发人员开发报表设计文件,可利用iReport 工具,生成*.jrxml文件
	 * 2.使用JasperReport提供的JasperCompileManager工具把*.jrxml文件编译成*.jasper文件
	 * 3.使用jasperReport 提供的JasperFillManager 工具把*.jasper文件编译成*.jrprint文件
	 * 4.使用导出管理器jasperExportManaer 或者各种格式的文件导出器JRXxxExport将*.jrprint文件导出成各种格式的报表文件
	 */
	public static void main(String[] args){
		compile();
		fill();
		export1();
//		export2();
//		export3();
//		view();
	}
	
	public static void compile(){
		try {
			JasperCompileManager.compileReportToFile("static.jrxml","static.jasper");
			System.out.println("成功编译成jasperReport文件 *.jasper");
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static void fill(){
		try {
			//填充时,即使没有使用数据源,也必须指定一个新建的JREmptyDataSource实例,而不能直接用null
			JasperFillManager.fillReportToFile("static.jasper",null,new JREmptyDataSource());
			System.out.println("成功填充成一个报表文件*.jrprint");
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	/*
	 * 利用JasperExportManager 生成pdf、html或者xml格式的文件(不能生成xls格式文件)
	 */
	public static void export1(){
		try {
			JasperExportManager.exportReportToPdfFile("static.jrprint","static1.pdf");
			System.out.println("成功生成pdf报表文件");
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	/*
	 * 利用JRXxxExport将*.jrprint文件导出成各种格式的报表文件
	 * 
	 */
	public static void export2(){
		try {
			JasperPrint jasperPrint=(JasperPrint)JRLoader.loadObject("static.jrprint");
			JRXlsExporter export=new JRXlsExporter();
			export.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
			export.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,"static.xls");
			export.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
			export.exportReport();
			System.out.println("成功生成xls报表文件");
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	/*
	 * 利用JasperRunManager,可把*.jasper文件直接生成html、pdf格式文件
	 */
	public static void export3(){
		try {
			JasperRunManager.runReportToPdfFile("static.jasper", "static2.pdf",null,new JREmptyDataSource());
			System.out.println("成功生成xls报表文件");
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
	/*
	 * 利用JRViewer可直接预览*.jrprint文件
	 */
	public static void view(){
		try {
			JRViewer jr=new JRViewer("static.jrprint",false);
			JFrame jf=new JFrame("报表预览");
			jf.add(jr);
			jf.pack();
			jf.setVisible(true);
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值