Jasperreport基本介绍(Jasperreport与Ireport介绍)

  发布时间:2017-03-13 09:27:48   作者:佚名   我要评论
Jasperreport是报表打印工具,支持pdf、csv多种格式的报表打印。JasperReport是一个开源的工具包,将JasperReport包加入到项目的classpath中即可开始使用JasperReport包了,下面小编就为大家带来Jasperreport基本介绍;感兴趣的朋友一起去看看吧

ireport设计模板,导入jfreechat对象

JasperReport在用数据填充报表时,根据图形报表的类型,生成对应的JFreeChart的Dataset对象,再调用org.jfree.chart.ChartFactory产生出对应的org.jfree.chart.JFreeChart对象。获取到该对象后,JasperReport在exporter里建立一个java.awt.image.BufferedImage对象,

BufferedImage返回一个java.awt.Graphics2D对象,再将它传入给之前JFreeChart对象,最后调用JFreeChart对象的draw方法将图形输出到BufferedImage对象,供给Exporter使用。

在介绍导入jfreechat对象之前,我们现在讨论一个东西,这个东西很有用,叫scriptlet---脚本语言,听过吧,我们把生成jfreechat对象的java代码放在报表模板的脚本里,在编译模板时,连同脚本一起编译进去。

jasperReport也是支持scriptlet的哦,先分析一下JasperReport的API吧!在填充报表时scriplet是一个非常有力的工具,

JRAbstractScriptlet.java位于net.sf.jasperreports.engine包下是一个抽象类

beforeReportInit()

afterReportInit() 

beforePageInit()

afterPageInit()

beforeColumnInit()

afterColumnInit()

beforeGroupInit(String groujpame)

afterGroupInit(String groujpame)

看看这些名字就知道你能完成那些功能,这几个方法是要求我们实现的,jasperReport给我们提供了一个实现类JRDefaultScriptlet.java,默认的空实现了上面几个方法,它只是很便利的为我们提供了所需的八个方法的空实现。我们写自己的scriptlet时需要继承JRDefaultScriptlet.java这个类实现自己的相应的功能即可。

好了,我们现在就来为模板添加scriptlet

1)  在模板中,选中整个模板,如图:

双击右边的属性窗口,将其中的内容设置为如图所示的内容:

将“scriptlet class”设为您即将要制作的java类,这里我的java类名叫scriplet.ScriptletDemo。

其内部代码如下:

package scriplet;

import net.sf.jasperreports.engine.JRDefaultScriptlet;

import net.sf.jasperreports.engine.JRScriptletException;

import net.sf.jasperreports.renderers.JFreeChartRenderer;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.plot.PiePlot;

import org.jfree.chart.plot.PiePlot3D;

import org.jfree.data.general.DefaultPieDataset;

public class ScriptletDemo extends JRDefaultScriptlet  {

    public void afterColumnInit() throws JRScriptletException {

        System.out.println("**************************************afterColumnInit()**************************************");

    }

    @Override

    public void afterDetailEval() throws JRScriptletException {

        System.out.println("**************************************afterDetailEval()**************************************");

    }

    @Override

    public void afterGroupInit(String groujpame) throws JRScriptletException {

        System.out.println("**************************************afterDetailEval()**************************************");

    }

    @Override

    public void afterPageInit() throws JRScriptletException {

        System.out.println("**************************************afterPageInit()**************************************");

    }

    @Override

    public void afterReportInit() throws JRScriptletException {

        System.out.println("**************************************afterReportInit() begin**************************************");

        //create pie chart dataset

        DefaultPieDataset dateset = new DefaultPieDataset();

       //set dataset value

        dateset.setValue("Chinese", 108);

        dateset.setValue("Math", 110);

        dateset.setValue("English", 74);

        dateset.setValue("Science Department", 226);

       /**//*

         * create jfreeChart object

         * the first parameter is pie chart title

         * the secend parameter is dataset of pie chart

         * the three parameter is boolean value,create chart note

         * the four parameter is boolean value,it's a tooltip of move mouse on

         * configure chart to generate URLs,It's get a PiePlot3D object

         * 

        */

        JFreeChart freeChart = ChartFactory.createPieChart3D("Report Pie Chart", dateset, true, false, false);

        PiePlot pieplot = (PiePlot) freeChart.getPlot();

        pieplot.setNoDataMessage("No data to display");

       // set variable "jfreeChart" value

       this.setVariableValue("jfreechart", new JFreeChartRenderer(freeChart));

        System.out.println("**************************************afterReportInit() end**************************************");

    }

    @Override

    public void beforeColumnInit() throws JRScriptletException {

        System.out.println("**************************************beforeColumnInit()**************************************");

    }

    @Override

    public void beforeDetailEval() throws JRScriptletException {

        System.out.println("**************************************beforeDetailEval()**************************************");

    }

    @Override

    public void beforeGroupInit(String groujpame) throws JRScriptletException {

        System.out.println("**************************************beforeGroupInit()**************************************");

    }

    @Override

    public void beforePageInit() throws JRScriptletException {

        System.out.println("**************************************beforePageInit()**************************************");

    }

    @Override

    public void beforeReportInit() throws JRScriptletException {

        System.out.println("**************************************beforeReportInit()**************************************");

    }

    public String showInfor() throws JRScriptletException {

        return "the is scriptlet scriptlet scriptlet the,sscriptlet report the is ascriptlet report this is a scriptlet report this is a scriptlet report";

    }

}

2) 新建变量variable

如图在选中“Variable”,右击,点击“添加variable”

将新建的variable属性设置如下图所示:

其中variable class设为“net.sf.jasperreports.engine.JRRenderable”,同志您可能要迷惑了,该选项的下拉菜单中没有该选项啊,是的,的确没有,但是你可以粘贴进去。

3) 添加图像,直接将组件中的“image”对象拖拽进来,拖拽的时候,会有图片选择框,这个没有关系,你可以选择一个您喜欢的图片,也可以直接取消,只不过是一个标志,在模板中出现如下画面:

是不是很丑呢,嘿嘿,我也觉得丑。

好了,下面来设置图片的属性,这个才是关键的。属性如下图:

重要的是image expression以及expression class,分别设为“$V{jfreechart}”、“net.sf.jasperreports.engine.JRRenderable”

至此模板设置成功。

4)  代码测试

将上面设计好的模板保存为“E:/ireport/jfreechat.jrxml”

写一段java代码测试一下:

package test;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.HashMap;

import net.sf.jasperreports.engine.JREmptyDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.base.JRBaseVariable;

import net.sf.jasperreports.view.JasperViewer;

public class JChartReportMain {

/**

 * Method name: main <BR>

 * Description: main <BR>

 * Remark: <BR>

 * @param args  void<BR>

 */

public static void main(String[] args) {

        String path = "

        File file = new File(path);

        InputStream in;

       try {

            HashMap<String, String> parameters = new HashMap<String, String>();

            parameters.put("ReportTitle", "LAOSHULIN");

            in = new FileInputStream(file);

            JasperReport jasperReport = JasperCompileManager.compileReport(in);

            for(int i = 0; i<jasperReport.getVariables().length;i++ ){

             JRBaseVariable jb = (JRBaseVariable)jasperReport.getVariables()[i];

            

             System.out.println(jb.getValueClassName() + jb.getName());

            }

            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,

                    parameters, new JREmptyDataSource());

            JasperViewer viewer = new JasperViewer(jasperPrint);

            viewer.setVisible(true);

        } catch (Exception e) {

            e.printStackTrace();

        }

}

}

运行结果如图:

你看多棒啊,是不是觉得自己很牛叉啊!

相关文章

  • ireport图文教程 中文PDF版

    本文档主要讲述的是ireport图文教程;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
    2017-03-13
  • iReport模板(Template) 中文WORD版

    本文档主要讲述的是iReport模板(Template) ;在iReport 中最有用的工具之一是使用向导利用templates来创建报表,在本章里我们将解释如何创建一个自定义的templates,如何把
    2017-01-13
  • iReport开发使用说明 中文WORD版 2.43MB

    本文一下主要就ireport模板生成使用char组件和table的生成过程和开发过程中碰到的问题进行说明(以Javabean为数据源,以sql为数据源的网上资料很多这里不做说明),使用的ire
    2016-08-26
  • ireport3.7.3快速入门指南 中文PDF版 3.36MB

    iReport 是一款开源组织的免费软件,其主要作用是用来以可视化的方式设计、生成 JasperReport 所使用的报表格式文件,因为 JasperReport 本身并未提供很好的可视化报表设
    2016-08-16
  • JasperReport+iReport报表开发手册 中文PDF版 1.7MB

    本书主要讲解JasperReport+iReport报表开发手册;有需要的朋友可以过来看看
    2016-08-11
  • iReport中文教程 中文word版 【8.35MB】

    本书主要介绍了iReport是一个能够创建复杂报表的开源项目,它100%使用Java语言编写,是目前全球最为流行的开源报表设计器之一。 由于它丰富的图形界面,你能够很快的创建出
    2016-07-27

最新评论