第一篇 jasperreport简介和helloworld

       (1) 简介

JasperReport是一个强大、灵活的开源报表生成工具,能够展示丰富的页面内容,并将之转换成PDFHTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EEWeb应用程序中生成动态内容。

iReport 也是开源软件,其主要作用是用来以可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计方式,ireport可视化的设计界面,支持拖拉试操作,方便、快捷的制作出各种复杂的报表。

Jaspersoft Studio是一个专为JasperReports报表引擎而开发的报表设计器,是iReport设计器的一个完整重构,基于Eclipse平台实现。它 能够让你创建包含图表、图片、子报表、交叉表等非常复杂的布局。可以通过JDBCTableModelsJavaBeansXMLHibernateCSV或自定义数据源来读取数据。可以将报表输出成PDFRTFXMLXLSCSVHTMLXHTMLtext DOCXOpenOffice

       (2) 准备环境:

              Jdk1.6.39  + eclipse-jee-helios-SR2-win32.zip + jasperreports-4.8.0-project.zip

              jasperreports可视化设计工具:

                     iReport-4.8.0-windows-installer.exe

                     jaspersoftstudio-2.0.1-windows-installer-x86_64.exe

       (3) jasperreports的目录结构       

 
jasperreports目录结构

                    build: 存放jasperreports项目编译生成的class文件,但它们未被打包成jar.

                    demo: 存放的实例.

                    dist: 自身的jar.

                    lib: 编译和运行依赖的jar.

                   doc: 一些xml文档和一个pdf的英文guide.

                   src: 源码

       (4) 第一个示例程序:

   (1) 项目结构预览

HelloWorld项目结构

   (2) 新建java项目

                           eclispe里面新建java project Jasperreports_HelloWorld

   (3) 导入需要的jar

       这里必须的包有:所有以commons开头的包和jasperreports-4.8.0.jar 这些jar包都可以在 libdist目录下找到 (jasperreports-fonts-4.8.0.jar是这个例子中编译的时候提示JVM无法识别字体时加进来的,可能跟使用的报表文件有关,不知道是不是必须的)

   (4) 编写报表模板文件

            jasperreports的报表模板文件扩展名为 .jrxml 这里我从它本身自带的示例中copy了一个过来,在 demo\samples\alterdesign\reports目录中的AlterDesignReport.jrxml 就是上面HelloWorld中看到的那个文件,可以在上面右键用xml editor打开看看。

   (5) 报表的编译、数据填充和运行

            jasperreports的核心是报表文件的设计,就是.jrxml文件,设计完成之后,需要对报表进行编译,就像java的源代码.java需要编译成.class文件一样,.jrxml报表模板文件经过编译之后,生成.jasper文件,HelloWorld中的AlterDesignReport.jrxml经过编译之后,生成AlterDesignReport.jasper文件,当然,文件名可以重新起。报表的编译用到JasperCompileManager类。

       经过编译之后的报表需要填充数据源、参数等,报表的数据源可以来自xml文件,数据库等,报表负责按照定义的模板样式显示数据源和参数等。报表的填充需要用到JasperFillManager类, 报表填充之后生成.jrprint文件。.jrprint是可以显示并且与格式无关的报表,即它既可以生成pdf格式报表,也可以生成excel格式报表,还可以直接使用Jasperreports的报表浏览工具来浏览。

           Jasperreports用户报表浏览的工具类为JRViewer 它继承自Java里的Jpanel, 因此很方便使用,接下来看看HelloWorld.java的源代码, 运行看看, 第一个示例是不是成功了呢!

package com.jasperreports.main; 

import javax.swing.JFrame; 

import net.sf.jasperreports.engine.JREmptyDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.swing.JRViewer;

 

public class HelloWorld { 

 

 

 

 

 

       public static void main(String[] args) throws JRException {             

              // 编译jasper报表模板

 

 

 

 

 

              JasperCompileManager.compileReportToFile("D:/workspaces/eclipse/JasperReport_HelloWorld/src/AlterDesignReport.jrxml", "AlterDesignReport.jasper");             

              // 填充jasper报表

 

 

 

 

 

              JasperFillManager.fillReportToFile("AlterDesignReport.jasper", null, new JREmptyDataSource());             

              // 显示jasper报表

 

 

 

 

 

              JRViewer jrviewer = new JRViewer("AlterDesignReport.jrprint", false);             

              JFrame jf = new JFrame("报表预览");

 

 

 

 

 

              jf.add(jrviewer);             

 

 

 

 

 

              jf.pack();             

 

 

 

 

 

              jf.setVisible(true);             

       }

}