欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jasperreport基本介紹(Jasperreport與Ireport介紹)

  發(fā)布時間:2017-03-13 09:27:48   作者:佚名   我要評論
Jasperreport是報表打印工具,支持pdf、csv多種格式的報表打印。JasperReport是一個開源的工具包,將JasperReport包加入到項目的classpath中即可開始使用JasperReport包了,下面小編就為大家?guī)鞪asperreport基本介紹;感興趣的朋友一起去看看吧

ireport設(shè)計模板,導(dǎo)入jfreechat對象

JasperReport在用數(shù)據(jù)填充報表時,根據(jù)圖形報表的類型,生成對應(yīng)的JFreeChart的Dataset對象,再調(diào)用org.jfree.chart.ChartFactory產(chǎn)生出對應(yīng)的org.jfree.chart.JFreeChart對象。獲取到該對象后,JasperReport在exporter里建立一個java.awt.image.BufferedImage對象,

BufferedImage返回一個java.awt.Graphics2D對象,再將它傳入給之前JFreeChart對象,最后調(diào)用JFreeChart對象的draw方法將圖形輸出到BufferedImage對象,供給Exporter使用。

在介紹導(dǎo)入jfreechat對象之前,我們現(xiàn)在討論一個東西,這個東西很有用,叫scriptlet---腳本語言,聽過吧,我們把生成jfreechat對象的java代碼放在報表模板的腳本里,在編譯模板時,連同腳本一起編譯進(jìn)去。

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

JRAbstractScriptlet.java位于net.sf.jasperreports.engine包下是一個抽象類

beforeReportInit()

afterReportInit() 

beforePageInit()

afterPageInit()

beforeColumnInit()

afterColumnInit()

beforeGroupInit(String groujpame)

afterGroupInit(String groujpame)

看看這些名字就知道你能完成那些功能,這幾個方法是要求我們實現(xiàn)的,jasperReport給我們提供了一個實現(xiàn)類JRDefaultScriptlet.java,默認(rèn)的空實現(xiàn)了上面幾個方法,它只是很便利的為我們提供了所需的八個方法的空實現(xiàn)。我們寫自己的scriptlet時需要繼承JRDefaultScriptlet.java這個類實現(xiàn)自己的相應(yīng)的功能即可。

好了,我們現(xiàn)在就來為模板添加scriptlet

1)  在模板中,選中整個模板,如圖:

雙擊右邊的屬性窗口,將其中的內(nèi)容設(shè)置為如圖所示的內(nèi)容:

將“scriptlet class”設(shè)為您即將要制作的java類,這里我的java類名叫scriplet.ScriptletDemo。

其內(nèi)部代碼如下:

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屬性設(shè)置如下圖所示:

其中variable class設(shè)為“net.sf.jasperreports.engine.JRRenderable”,同志您可能要迷惑了,該選項的下拉菜單中沒有該選項啊,是的,的確沒有,但是你可以粘貼進(jìn)去。

3) 添加圖像,直接將組件中的“image”對象拖拽進(jìn)來,拖拽的時候,會有圖片選擇框,這個沒有關(guān)系,你可以選擇一個您喜歡的圖片,也可以直接取消,只不過是一個標(biāo)志,在模板中出現(xiàn)如下畫面:

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

好了,下面來設(shè)置圖片的屬性,這個才是關(guān)鍵的。屬性如下圖:

重要的是image expression以及expression class,分別設(shè)為“$V{jfreechart}”、“net.sf.jasperreports.engine.JRRenderable”

至此模板設(shè)置成功。

4)  代碼測試

將上面設(shè)計好的模板保存為“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();

        }

}

}

運行結(jié)果如圖:

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

相關(guān)文章

  • ireport圖文教程 中文PDF版

    本文檔主要講述的是ireport圖文教程;希望本文檔會給有需要的朋友帶來幫助;感興趣的朋友可以過來看看
    2017-03-13
  • iReport模板(Template) 中文WORD版

    本文檔主要講述的是iReport模板(Template) ;在iReport 中最有用的工具之一是使用向?qū)Ю胻emplates來創(chuàng)建報表,在本章里我們將解釋如何創(chuàng)建一個自定義的templates,如何把
    2017-01-13
  • iReport開發(fā)使用說明 中文WORD版 2.43MB

    本文一下主要就ireport模板生成使用char組件和table的生成過程和開發(fā)過程中碰到的問題進(jìn)行說明(以Javabean為數(shù)據(jù)源,以sql為數(shù)據(jù)源的網(wǎng)上資料很多這里不做說明),使用的ire
    2016-08-26
  • ireport3.7.3快速入門指南 中文PDF版 3.36MB

    iReport 是一款開源組織的免費軟件,其主要作用是用來以可視化的方式設(shè)計、生成 JasperReport 所使用的報表格式文件,因為 JasperReport 本身并未提供很好的可視化報表設(shè)
    2016-08-16
  • JasperReport+iReport報表開發(fā)手冊 中文PDF版 1.7MB

    本書主要講解JasperReport+iReport報表開發(fā)手冊;有需要的朋友可以過來看看
    2016-08-11
  • iReport中文教程 中文word版 【8.35MB】

    本書主要介紹了iReport是一個能夠創(chuàng)建復(fù)雜報表的開源項目,它100%使用Java語言編寫,是目前全球最為流行的開源報表設(shè)計器之一。 由于它豐富的圖形界面,你能夠很快的創(chuàng)建出
    2016-07-27

最新評論