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

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

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

Jasperreport基本介紹

Jasperreport與Ireport介紹

Jasperreport是報(bào)表打印工具,支持pdf、csv多種格式的報(bào)表打印。

JasperReport是一個(gè)開源的工具包,將JasperReport包加入到項(xiàng)目的classpath中即可開始使用JasperReport包了,從java程序中通過調(diào)用包中的類對(duì)jrxml文件進(jìn)行操作,可以完成報(bào)表的編譯、顯示、輸出等工作;

Jasperreport的報(bào)表生成過程,如下圖。

如上圖所示。報(bào)表模板有兩種制作方式:

1)利用ireport圖形編輯工具,iReport是報(bào)表編輯圖形工具,編輯完成后輸出jrxml文件(XML格式), 生成jasper文件(以.jasper結(jié)尾);

2)直接利用java代碼編譯生成jasper文件(以.jasper結(jié)尾)。

最終要使用的是編譯后的*.jasper文件。

Jasperreport支持多種數(shù)據(jù)源,包括xml、數(shù)據(jù)庫(kù)、JavaBean等多種數(shù)據(jù)源。

Jasperreport基本類

l  net.sf.jasperreports.engine.JasperCompileManager類。

    使用這個(gè)類的幾個(gè)靜態(tài)方法即可完成對(duì)報(bào)表的編譯工作(具體參見api文檔)

    編譯完成后可以JasperCompileManager有兩種處理方式:

       1> 返回一個(gè)JasperReport對(duì)象

       2> 在.jrxml文件所在的目錄生成一個(gè).jasper文件

    這兩種方式是由程序員自己選擇的。不過我比較傾向使用.jasper文件,畢竟報(bào)表的結(jié)構(gòu)不是每天都在改動(dòng),所以每次重新編譯報(bào)表并不是很劃算。

l  net.sf.jasperreports.engine.JasperFillManager類

    這個(gè)類的作用是用數(shù)據(jù)填充報(bào)表。它可以使用JasperReport對(duì)象也可以使用。jasper文件做為報(bào)表模板。

    它同樣有2中處理方式:

          1> 返回一個(gè)JsaperPrint對(duì)象。

          2> 在.jasper文件所在目錄生成一個(gè).jrprint文件

    這個(gè)類使用net.sf.jasperreports.engine.JRDataSource接口的實(shí)現(xiàn)做為數(shù)據(jù)源。任何實(shí)現(xiàn)了JRDataSource的類均可做為數(shù)據(jù)源使用

    在net.sf.jasperreports.engine.data包中定義了一些數(shù)據(jù)源,可根據(jù)自己的需要選擇。這里我使用的是JRTableModelDataSource做為

l  3. net.sf.jasperreports.engine.JasperPrintManager和

net.sf.jasperreports.engine.JasperExportManager這兩個(gè)類的作用是打印、導(dǎo)出報(bào)表他們使用 JasperPrint 和 .jrprint文件做為輸入。

Jasperreport實(shí)例演示

少說廢話,下面我們就進(jìn)行一些基本的演示。在下才疏學(xué)淺,在調(diào)查中只做了三種嘗試:1)利用ireport進(jìn)行模板設(shè)計(jì),數(shù)據(jù)源采用xml文件;

2)利用ireport設(shè)計(jì)模板,導(dǎo)入jfreechat對(duì)象;

3)使用java代碼設(shè)計(jì)模板,數(shù)據(jù)源為對(duì)象數(shù)組。

下面我們逐一進(jìn)行講解。OK,let’s go!?。?!

Ireport設(shè)計(jì)模板,xml數(shù)據(jù)源

1) 安裝ireport。

直接點(diǎn)擊Windows版本ireport安裝文件,安裝文件中已經(jīng)包含了jasperreport組件,這里不做表述,有問題問百度!

2) 打開ireport

Ireport 3.7.4用戶界面如圖所示。

客官您瞧見,用戶界面上的“Quick start”沒?按照?qǐng)D中表示的1、2、3去做,就基本能搞清楚ireport是什么道道!

3) 添加數(shù)據(jù)源

點(diǎn)擊標(biāo)號(hào)①,界面如下:

哇塞,這么多數(shù)據(jù)源,看來真的是很好很強(qiáng)大耶。我們選擇“xml file datasource”,點(diǎn)擊next,

按照上圖填入數(shù)據(jù)源名稱、以及數(shù)據(jù)源xml文件,注意一定要選擇“Use the report Xpath expression when filling the report”.點(diǎn)擊“save” 即可,在下圖標(biāo)記處會(huì)出現(xiàn)相應(yīng)的生成結(jié)果。

現(xiàn)在讓我們先查看一下,剛剛添加xml數(shù)據(jù)源的具體結(jié)構(gòu):

數(shù)據(jù)源準(zhǔn)備好了,可以開始模板創(chuàng)建了。

4) 創(chuàng)建模板

在上圖中點(diǎn)擊“②”,出現(xiàn)下圖。

點(diǎn)擊“Launch report wizard”,如下圖:

輸入報(bào)表名以及保存路徑,點(diǎn)擊“下一步”

在“Connections/Data sources”中選擇你需要的數(shù)據(jù)源。接下來就直接點(diǎn)擊“下一步”,直到完成。

點(diǎn)擊完成后,進(jìn)入模板元素設(shè)計(jì)頁面。

圖中,左邊標(biāo)記為頁面監(jiān)視器(report inspector),右邊為組件工具欄。若客官您在使用的過程中,不小心關(guān)閉了這些窗口,您可以在菜單欄“窗口”中找到,點(diǎn)擊之后,該窗口就會(huì)出現(xiàn)了。

5) 添加元素

在組件工具欄中選擇組件,直接拖拽到模板中。

點(diǎn)擊圖中紅色標(biāo)記,進(jìn)入如下圖:

將圖中標(biāo)記的“Customers”拖拽到下方的標(biāo)記處,此處的作用就是要將數(shù)據(jù)源中的數(shù)據(jù)字段添加要ireport中,以便下一步為剛剛建立的“Field”元素指定,查詢語句。如下圖。

點(diǎn)擊OK即可。

再右擊Field元素,點(diǎn)擊“Edit Expression”,如圖:

將Field括號(hào)內(nèi)的改成您需要的字段如“CompanyName”。點(diǎn)擊“Apply”

做到這一步,您可能覺得“應(yīng)該該做了都做完了,可以進(jìn)行預(yù)覽了!”,其實(shí)我也這么想的,也這么做的,可是,預(yù)覽報(bào)錯(cuò),經(jīng)過研究,我還是少做了一步,而這一步至關(guān)重要,就是我們沒有選擇xml文件中的數(shù)據(jù)list節(jié)點(diǎn)。

您必須要按照如上圖所做,輸入Query語句。

好了,這下我們就可以預(yù)覽了。

6) 預(yù)覽報(bào)表

點(diǎn)擊“preview”按鈕就成,讓我們看看效果吧:

呵呵,丑是丑了點(diǎn),但是這是我們頭一回用ireport,還是很有成就感的。

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

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

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

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

jasperReport也是支持scriptlet的哦,先分析一下JasperReport的API吧!在填充報(bào)表時(shí)scriplet是一個(gè)非常有力的工具,

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

beforeReportInit()

afterReportInit() 

beforePageInit()

afterPageInit()

beforeColumnInit()

afterColumnInit()

beforeGroupInit(String groujpame)

afterGroupInit(String groujpame)

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

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

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

雙擊右邊的屬性窗口,將其中的內(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”,右擊,點(diǎn)擊“添加variable”

將新建的variable屬性設(shè)置如下圖所示:

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

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

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

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

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

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

4)  代碼測(cè)試

將上面設(shè)計(jì)好的模板保存為“E:/ireport/jfreechat.jrxml”

寫一段java代碼測(cè)試一下:

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

        }

}

}

運(yùn)行結(jié)果如圖:

你看多棒啊,是不是覺得自己很牛叉?。?/p>

java代碼設(shè)計(jì)模板,數(shù)據(jù)源為對(duì)象數(shù)組。

用java實(shí)現(xiàn)模板設(shè)計(jì),我們就直接粘貼代碼,先要將jasperreport相關(guān)的jar包導(dǎo)入進(jìn)來:

我的代碼結(jié)構(gòu)如圖所示:

WebappDataSource.java

/*

 * JasperReports - Free Java Reporting Library.

 * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.

 * http://www.jaspersoft.com

 *

 * Unless you have purchased a commercial license agreement from Jaspersoft,

 * the following license terms apply:

 *

 * This program is part of JasperReports.

 *

 * JasperReports is free software: you can redistribute it and/or modify

 * it under the terms of the GNU Lesser General Public License as published by

 * the Free Software Foundation, either version 3 of the License, or

 * (at your option) any later version.

 *

 * JasperReports is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

 * GNU Lesser General Public License for more details.

 * 

 * You should have received a copy of the GNU Lesser General Public License

 * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.

 */

package datasource;

import net.sf.jasperreports.engine.JRDataSource;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRField;

/**

 * @author Teodor Danciu (teodord@users.sourceforge.net)

 * @version $Id: WebappDataSource.java 3031 2009-08-27 11:14:57Z teodord $

 */

public class WebappDataSource implements JRDataSource

{

/**

 *

 */

private Object[][] data =

{

{"Berne", new Integer(22), "Bill", "250 - 20th Ave."},

{"Berne", new Integer(9), "James Schneider", "277 Seventh Av."},

{"Boston", new Integer(32), "Michael Ott", "339 College Av."},

{"Boston", new Integer(23), "Julia Heiniger", "358 College Av."},

{"Chicago", new Integer(39), "Mary Karsen", "202 College Av."},

{"Chicago", new Integer(35), "George Karsen", "412 College Av."},

{"Chicago", new Integer(11), "Julia White", "412 Upland Pl."},

{"Dallas", new Integer(47), "Janet Fuller", "445 Upland Pl."},

{"Dallas", new Integer(43), "Susanne Smith", "2 Upland Pl."},

{"Dallas", new Integer(40), "Susanne Miller", "440 - 20th Ave."},

{"Dallas", new Integer(36), "John Steel", "276 Upland Pl."},

{"Dallas", new Integer(37), "Michael Clancy", "19 Seventh Av."},

{"Dallas", new Integer(19), "Susanne Heiniger", "86 - 20th Ave."},

{"Dallas", new Integer(10), "Anne Fuller", "135 Upland Pl."},

{"Dallas", new Integer(4), "Sylvia Ringer", "365 College Av."},

{"Dallas", new Integer(0), "Laura Steel", "429 Seventh Av."},

{"Lyon", new Integer(38), "Andrew Heiniger", "347 College Av."},

{"Lyon", new Integer(28), "Susanne White", "74 - 20th Ave."},

{"Lyon", new Integer(17), "Laura Ott", "443 Seventh Av."},

{"Lyon", new Integer(2), "Anne Miller", "20 Upland Pl."},

{"New York", new Integer(46), "Andrew May", "172 Seventh Av."},

{"New York", new Integer(44), "Sylvia Ott", "361 College Av."},

{"New York", new Integer(41), "Bill King", "546 College Av."},

{"Oslo", new Integer(45), "Janet May", "396 Seventh Av."},

{"Oslo", new Integer(42), "Robert Ott", "503 Seventh Av."},

{"Paris", new Integer(25), "Sylvia Steel", "269 College Av."},

{"Paris", new Integer(18), "Sylvia Fuller", "158 - 20th Ave."},

{"Paris", new Integer(5), "Laura Miller", "294 Seventh Av."},

{"San Francisco", new Integer(48), "Robert White", "549 Seventh Av."},

{"San Francisco", new Integer(7), "James Peterson", "231 Upland Pl."}

};

private int index = -1;

/**

 *

 */

public WebappDataSource()

{

}

/**

 *

 */

public boolean next() throws JRException

{

index++;

return (index < data.length);

}

/**

 *

 */

public Object getFieldValue(JRField field) throws JRException

{

Object value = null;

String fieldName = field.getName();

if ("city".equals(fieldName))

{

value = data[index][0];

}

else if ("ID".equals(fieldName))

{

value = data[index][1];

}

else if ("name".equals(fieldName))

{

value = data[index][2];

}

else if ("address".equals(fieldName))

{

value = data[index][3];

}

return value;

}

}

next()  實(shí)現(xiàn)了 JRDataSource 中的方法.判斷是否還有下一個(gè). 

getFieldValue(JRField field) 實(shí)現(xiàn)了JRDataSource 中的方法. field 是對(duì)應(yīng)報(bào)表中的要填充的字段的名稱. 

模板設(shè)計(jì)代碼,java實(shí)現(xiàn)模板時(shí),要貫徹一個(gè)思想就設(shè)計(jì)思路要與XML模板中組成結(jié)構(gòu)一致,這也是我的心得體會(huì)之一。

StaticText.java

package test;

import java.io.File;

import java.util.HashMap;

import net.sf.jasperreports.engine.JRAlignment;

import net.sf.jasperreports.engine.JRElement;

import net.sf.jasperreports.engine.JRException;

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.design.JRDesignBand;

import net.sf.jasperreports.engine.design.JRDesignExpression;

import net.sf.jasperreports.engine.design.JRDesignField;

import net.sf.jasperreports.engine.design.JRDesignParameter;

import net.sf.jasperreports.engine.design.JRDesignReportFont;

import net.sf.jasperreports.engine.design.JRDesignStyle;

import net.sf.jasperreports.engine.design.JRDesignTextField;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.engine.util.JRLoader;

import net.sf.jasperreports.view.JasperDesignViewer;

import net.sf.jasperreports.view.JasperViewer;

import datasource.WebappDataSource;

public class StaticText {

JRDesignReportFont font1 = new JRDesignReportFont();

// TODO Auto-generated method stub

/**

 * Method name: main <BR>

 * Description: main <BR>

 * Remark: <BR>

 * @param args  void<BR>

 */

public static void main(String[] args) {

JRDesignReportFont font1 = new JRDesignReportFont();

font1.setFontSize(12);

try {

// JRDesignStaticText text1=ReportUtil.getStaticText(

// 110,0,400,22,null,JRTextElement.TEXT_ALIGN_CENTER,font1,"city");

// JRDesignStaticText text2=ReportUtil.getStaticText(

// 110,0,400,22,null,JRTextElement.TEXT_ALIGN_CENTER,font1,"name");

// JRDesignStaticText text3=ReportUtil.getStaticText(

// 110,0,400,22,null,JRTextElement.TEXT_ALIGN_CENTER,font1,"address");

    JasperDesign jasperDesign = new JasperDesign();

    jasperDesign.setName("NoXmlDesignReport");

    jasperDesign.setPageWidth(595);

    jasperDesign.setPageHeight(842);

    jasperDesign.setColumnWidth(515);

    jasperDesign.setColumnSpacing(0);

    jasperDesign.setLeftMargin(40);

    jasperDesign.setRightMargin(40);

    jasperDesign.setTopMargin(50);

    jasperDesign.setBottomMargin(50);

    

JRDesignStyle normalStyle = new JRDesignStyle();

normalStyle.setName("Arial_Normal");

normalStyle.setDefault(true);

normalStyle.setFontName("Arial");

normalStyle.setFontSize(12);

normalStyle.setPdfFontName("Helvetica");

normalStyle.setPdfEncoding("Cp1252");

normalStyle.setPdfEmbedded(false);

jasperDesign.addStyle(normalStyle);

// JRDesignStyle boldStyle = new JRDesignStyle();

// boldStyle.setName("Arial_Bold");

// boldStyle.setFontName("Arial");

// boldStyle.setFontSize(12);

// boldStyle.setBold(true);

// boldStyle.setPdfFontName("Helvetica-Bold");

// boldStyle.setPdfEncoding("Cp1252");

// boldStyle.setPdfEmbedded(false);

// jasperDesign.addStyle(boldStyle);

//

// JRDesignStyle italicStyle = new JRDesignStyle();

// italicStyle.setName("Arial_Italic");

// italicStyle.setFontName("Arial");

// italicStyle.setFontSize(12);

// italicStyle.setItalic(true);

// italicStyle.setPdfFontName("Helvetica-Oblique");

// italicStyle.setPdfEncoding("Cp1252");

// italicStyle.setPdfEmbedded(false);

// jasperDesign.addStyle(italicStyle);

JRDesignParameter parameter = new JRDesignParameter();

parameter.setName("ReportTitle");

parameter.setValueClass(java.lang.String.class);

jasperDesign.addParameter(parameter);

     // Fields

JRDesignField field = new JRDesignField();

field.setName("city");

field.setValueClass(java.lang.String.class);

jasperDesign.addField(field);

field = new JRDesignField();

field.setName("ID");

field.setValueClass(java.lang.Integer.class);

jasperDesign.addField(field);

field = new JRDesignField();

field.setName("name");

field.setValueClass(java.lang.String.class);

jasperDesign.addField(field);

field = new JRDesignField();

field.setName("address");

field.setValueClass(java.lang.String.class);

jasperDesign.addField(field);

JRDesignBand band = null;

JRDesignTextField textField = null;

JRDesignExpression expression = null;

band = new JRDesignBand();

band.setHeight(20);

textField = new JRDesignTextField();

textField.setX(5);

textField.setY(4);

textField.setWidth(100);

textField.setHeight(15);

textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);

textField.setStyle(normalStyle);

expression = new JRDesignExpression();

expression.setValueClass(java.lang.String.class);

expression.setText("$F{city}");

textField.setExpression(expression);

band.addElement(textField);

textField = new JRDesignTextField();

textField.setStretchWithOverflow(true);

textField.setX(120);

textField.setY(4);

textField.setWidth(100);

textField.setHeight(15);

textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);

textField.setStyle(normalStyle);

expression = new JRDesignExpression();

expression.setValueClass(java.lang.Integer.class);

expression.setText("$F{ID}");

textField.setExpression(expression);

band.addElement(textField);

textField = new JRDesignTextField();

textField.setStretchWithOverflow(true);

textField.setX(220);

textField.setY(4);

textField.setWidth(100);

textField.setHeight(15);

textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);

textField.setStyle(normalStyle);

expression = new JRDesignExpression();

expression.setValueClass(java.lang.String.class);

expression.setText("$F{name}");

textField.setExpression(expression);

band.addElement(textField);

textField = new JRDesignTextField();

textField.setStretchWithOverflow(true);

textField.setX(400);

textField.setY(4);

textField.setWidth(100);

textField.setHeight(15);

textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);

textField.setStyle(normalStyle);

expression = new JRDesignExpression();

expression.setValueClass(java.lang.String.class);

expression.setText("$F{address}");

textField.setExpression(expression);

band.addElement(textField);

jasperDesign.setDetail(band);

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

            titleParameters.put("ReportTitle", "helloworld");

            File reportFile= new File("E:/billin.jasper");

JasperCompileManager.compileReportToFile(jasperDesign,reportFile.getPath());

JasperReport jasperReport=(JasperReport)JRLoader.loadObject(reportFile.getPath());

JasperPrint jasperPrint=JasperFillManager.fillReport( jasperReport,titleParameters,new WebappDataSource());

System.out.println("--------"+jasperPrint.getName());

            JasperViewer viewer = new JasperViewer(jasperPrint);

            viewer.setTitle("");

            viewer.setVisible(true);

//             JasperDesignViewer viewer = new JasperDesignViewer(jasperReport);

//             viewer.setVisible(true);

} catch (JRException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

下面就可以運(yùn)行,查看報(bào)表結(jié)果:

關(guān)于jasperreport的sample

1)運(yùn)行sample之前需要安裝ant服務(wù)器

2)進(jìn)入到某個(gè)sample目錄中,輸入ant,之后再輸入ant view

3)有些sample需要運(yùn)行sample自帶的數(shù)據(jù),則在hsqldb目錄中,輸入ant runServer命令啟動(dòng)數(shù)據(jù)庫(kù),再到sample目錄中,輸入ant,之后再輸入ant view。

相關(guān)文章

  • ireport圖文教程 中文PDF版

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

    本文檔主要講述的是iReport模板(Template) ;在iReport 中最有用的工具之一是使用向?qū)Ю胻emplates來創(chuàng)建報(bào)表,在本章里我們將解釋如何創(chuàng)建一個(gè)自定義的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 是一款開源組織的免費(fèi)軟件,其主要作用是用來以可視化的方式設(shè)計(jì)、生成 JasperReport 所使用的報(bào)表格式文件,因?yàn)?JasperReport 本身并未提供很好的可視化報(bào)表設(shè)
    2016-08-16
  • JasperReport+iReport報(bào)表開發(fā)手冊(cè) 中文PDF版 1.7MB

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

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

最新評(píng)論