当前位置: 首页 > news >正文

jasperreport开发实例及问题

以下文件参照: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文件

代码段:

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();
		}
	}

}
在这里,static.jrml 可以在iReport自己随便制作一个,毕竟这个例子中没有涉及到数据库连接。如果你就这么拷贝进去,肯定会出错,因为要引入很多的jar包

如果出现以下情况:不是其他原因,就是你的jar包没有导入完全,我的导入必须的jar包之后是这样:并且只少不多,根据你自身的配置还需要加点


出现java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException错误,但是在整个程序中没有使用groovy,那么可能是在其他包中需要使用这个class,同时参考:http://sunky045.javaeye.com/blog/503315

 

1.

spring+jasperReport生成PDF格式的报表时报

    java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfWriter.setRgbTransparencyBlending(Z)V异常

    原因:iText.jar文件过旧,将之改为2.1版就没事了。
2.
java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException异常
    原因:没有导入 groovy-all.jar 包,导入 groovy-all.jar 包就可以了。
3.

Excle 应用:


java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCellStyle

出现上述错误提示加入 poi-3.2-FINAL-20081019.jar

4.

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :

pdfFontName   : STSong-Light

pdfEncoding   : UniGB-UCS2-H

isPdfEmbedded : false

出现上述错误提示加入

iTextAsian.jar

5.

java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

出现上述错误提示加入

commons-digester-1.7.jar   iReport/lib  功能简述:解析 xml 文件;

6.

java.lang.NoClassDefFoundError: org/apache/commons/collections/ArrayStack

出现上述错误提示加入

commons-beanutils-1.7.jar    iReport/lib

 7.

java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap

出现上述错误提示加入

commons-collections-2.1.jar   iReport/lib


相关文章:

  • jasperreport ireport PDF中文字体完美解决方案
  • iReport+jasperreport创建子表的几种方式(1)
  • iReport连接Mysql创建图表报表
  • iReport+jasperreport创建子表的几种方式(2)
  • Jasperreports导出PDF、web上html的几个实用连接
  • 关于Unity3D中的UnitySendMessage方法的使用!!!
  • Unity3D如何读取保存XML,以及用U3D内置方式保存文件
  • unity3D调用外接摄像头,保存图片、不使用截屏方式
  • Unity3D中Find的用法
  • Unity3D中世界坐标转换到NGUI坐标
  • Window8.1+VS2013+Python+cocos2d-x-3.2
  • Java环境配置好之后,cnd窗口Java可以执行,但是Javac不能执行
  • cocos2d-x import org.cocos2dx.lib cannot be resolved
  • C#字符串处理:裁剪,替换,移除
  • NGUI 创建自定义按钮并添加按钮响应
  • SegmentFault for Android 3.0 发布
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【Amaple教程】5. 插件
  • Akka系列(七):Actor持久化之Akka persistence
  • C++入门教程(10):for 语句
  • centos安装java运行环境jdk+tomcat
  • docker容器内的网络抓包
  • HTML-表单
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • js算法-归并排序(merge_sort)
  • MySQL数据库运维之数据恢复
  • Redis中的lru算法实现
  • spring学习第二天
  • 从零开始学习部署
  • 蓝海存储开关机注意事项总结
  • 前嗅ForeSpider采集配置界面介绍
  • 深入浅出Node.js
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​io --- 处理流的核心工具​
  • (1)Android开发优化---------UI优化
  • (14)Hive调优——合并小文件
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (南京观海微电子)——I3C协议介绍
  • (四)linux文件内容查看
  • (四)模仿学习-完成后台管理页面查询
  • (译) 函数式 JS #1:简介
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20180129]bash显示path环境变量.txt
  • [Assignment] C++1
  • [bzoj1038][ZJOI2008]瞭望塔
  • [C# 基础知识系列]专题十六:Linq介绍