小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

圖示ireport中使用javabean作數(shù)據(jù)源開發(fā)基于jasperreports報(bào)表過程

 hehffyy 2011-02-11
圖示ireport 中使用javabean 作數(shù)據(jù)源開發(fā) 基于 jasperreports 報(bào)表 過程
——學(xué)習(xí)筆記系列之ireport起步
xmlin



本文不講原理,因?yàn)榫W(wǎng)上的資源很多,本文以一個(gè)簡單的日銷售報(bào)表為例,記錄在 ireport 中使用 javabe an 作數(shù)據(jù)源開發(fā) 基于 jasperreports 報(bào)表 過程 .

一.準(zhǔn)備工作


1.
 
正確安裝 jdk
2.
 
 http://ireport./ 去下載 ireport, 本文使用 1.3.1 版本,解壓 iReport 在任意目錄,解壓后的文件里面有一個(gè) iReport.bat ,通過雙擊運(yùn)行。 
3.
 
 http://jasperreports./index.html 下載 jasperreport, 本文使用的是 1.3.1 版本,解壓到任意目錄,開發(fā)中需要使用其中的 jasperreports-1.3.1.jar  commons-logging-1.0.2.jar 、 commons-collections-2.1.jar ,使用 bean 做為數(shù)據(jù)源還需要 commons-beanutils-1.7.jar, 如果需要生成 pdf 文件 , 還需要 itext-1.3.1.jar 、 iTextAsian.jar, 如果使用動(dòng)態(tài)編譯 jrxml 文件,還需要 commons-digester-1.7.jar 。


二.創(chuàng)建 javabean


1.
 
創(chuàng)建 DailySales.java, 一個(gè)簡單 VO bean 。 

import java.io.Serializable;


public class DailySales implements Serializable

{

private static final long serialVersionUID = 1L;

private String productNo ;

private String productName ;

private int number ;

private int money ;

private int id ;

public DailySales(String productNo, String productName, int number, int money)

{

this . productNo = productNo;

this . productName = productName;

this . number = number;

this . money = money;

}

public String getProductNo()

{

return productNo ;

}

public void setProductNo(String productNo)

{

this . productNo = productNo;

}

public String getProductName()

{

return productName ;

}

public void setProductName(String productName)

{

this . productName = productName;

}

public int getNumber()

{

return number ;

}

public void setNumber( int number)

{

this . number = number;

}

public int getMoney()

{

return money ;

}

public void setMoney( int money)

{

this . money = money;

}

public int getId()

{

return id ;

}


public void setId( int id)

{

this . id = id;

}

}


2 .生成數(shù)據(jù)源


import java.util.Arrays;

import java.util.Collection;

/**

* 簡單工廠類,取得數(shù)據(jù)

@author xmlin

*

*/

public class DailySalesFactory

{

// 為了在 ireport 中能夠測試,必須使用 static 方法

public static Collection<DailySales> getBeanCollection()

{

// 數(shù)據(jù)源的生成,通常調(diào)用 dao 操作

List<DailySales> data = new ArrayList<DailySales>();

for ( int i = 0; i < 100; i++)

{

data.add( new DailySales( " 貨號 " + i, " 產(chǎn)品 " + i, i, i * 100));

}

return data;

}

}


三.使用 ireport 開發(fā)報(bào)表樣式

1.新建一個(gè)項(xiàng)目。

2.設(shè)置類路徑,在菜單“ options” 中選擇 Classpath, 點(diǎn)擊在彈出框中的 add folder ,填寫 javabean 編譯成的 .class 文件存放的路徑 點(diǎn) save Classpath 完成。如圖


3.設(shè)置數(shù)據(jù)源.在菜單" Data "中選擇” Connection/Data sources”, 點(diǎn)擊在彈出框中的 new 按鈕增加一個(gè)數(shù)據(jù)源.如圖 

其中 Name 隨便取一個(gè)名字,T ype of Connection/Data 選擇 JavaBeans set data source, 如果使用其它的數(shù)據(jù)源則選擇其它的選項(xiàng).F actory class 為我們剛才創(chuàng)建的 Factory 類,里面包含取得測試數(shù)據(jù)的靜態(tài)方法getBeanCollection() .用 Test 測試是否成功,點(diǎn) Save 保存.

4. 設(shè)置活動(dòng)連接.在菜單" Data "中選擇” Set Active Connection”.

5. Report Query , 在菜單" Data "中選擇” Report Query”, 填寫 javabean, 即我們創(chuàng)建的 VO bean. 如圖

 . 設(shè)計(jì)報(bào)表. 
設(shè)計(jì)日期字段如圖 

設(shè)計(jì)填充字段 , 如圖 

設(shè)計(jì)頁數(shù)字段如圖


設(shè)計(jì)好的報(bào)表樣式如圖

點(diǎn)菜單" build "中的" compile "進(jìn)行編譯,然后再” execute with connection datasource” 就可以看到報(bào)表的結(jié)果了. 
報(bào)表設(shè)計(jì)完成,在 ireport 的執(zhí)行路徑下會(huì)生成一個(gè) DailySales.jasper 的文件.

四.生成報(bào)表


生成的 DailySales.jasper 可以在 web 服務(wù)端生成報(bào)表 , 也可以在肥客戶端如 swing 生成 , 這里寫一個(gè)在肥客戶端和簡單運(yùn)用 .


import java.awt.Dimension;

import java.util.HashMap;

import java.util.Map;


import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

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

import net.sf.jasperreports.view.JasperViewer;


public class TestReport

{

public static void main(String[] args)

{

TestReport. showReport ();

}

private static void showReport()

{

String reportPath = "D:\\dailySales.jasper" ;

Map parameters = new HashMap();

// 如果報(bào)表中有用到變量,在這里給它賦值.

//parameters.put("ReportTitle", " 報(bào)表標(biāo)題 ");

try

{

JasperReport jasperReport = (JasperReport) JRLoader. loadObject (reportPath);

JasperPrint jasperPrint = JasperFillManager. fillReport (jasperReport, parameters, newJRBeanCollectionDataSource(getBeanCollection() ) );

JasperViewer jrview = new JasperViewer(jasperPrint);

jrview.setPreferredSize( new Dimension(200,100));

jrview.setVisible( true );

}

catch (JRException e)

{

e.printStackTrace();

}

catch (Exception e)

{

e.printStackTrace();

}

}

}


運(yùn)行生成的結(jié)果如圖 


生成各種格式的報(bào)表文件 :


public static void main(String[] args)

{

try

{

// 編譯報(bào)表,并 jrxml 所在的目錄中生成 jasper 文件

JasperCompileManager. compileReportToFile ( "d:\\test.jrxml" );

Map param = new HashMap ();

JasperPrint jasperPrint = JasperFillManager. fillReport ( "d:\\test.jasper" , param,

new JRBeanCollectionDataSource(DailySalesFactory. getBeanCollection ()));

// 生成 html  pdf 也可以使用 JRExporter 來生成

JasperExportManager. exportReportToHtmlFile (jasperPrint, "d:\\test.html" );

JasperExportManager. exportReportToPdfFile (jasperPrint, "d:\\test.pdf" );


// 使用 JRExporter 來生成 XLS, 很多參數(shù)可以查 api  ireport 的屬性窗口

JRExporter xlsExporter = new JRXlsExporter();

ByteArrayOutputStream xlsOut = new ByteArrayOutputStream();

xlsExporter.setParameter(JRExporterParameter. JASPER_PRINT , jasperPrint);

xlsExporter.setParameter(JRExporterParameter. OUTPUT_STREAM , xlsOut);

xlsExporter.setParameter(JRXlsExporterParameter. IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS , Boolean. TRUE ); // 刪除記錄最下面的空行

xlsExporter.setParameter(JRXlsExporterParameter. IS_ONE_PAGE_PER_SHEET , Boolean. FALSE ); // 刪除多余的 ColumnHeader

xlsExporter.setParameter(JRXlsExporterParameter. IS_WHITE_PAGE_BACKGROUND , Boolean. FALSE ); // 顯示邊框

xlsExporter.exportReport();


FileOutputStream out = new FileOutputStream( new File( "d:\\test.xls" ));

out.write(xlsOut.toByteArray());


// 使用 JRExporter 來生成 html , 很多參數(shù)可以查 api  ireport 的屬性窗口

JRExporter htmlExporter = new JRHtmlExporter();

ByteArrayOutputStream htmlOut = new ByteArrayOutputStream();

htmlExporter.setParameter(JRHtmlExporterParameter. JASPER_PRINT , jasperPrint);

htmlExporter.setParameter(JRHtmlExporterParameter. OUTPUT_STREAM , htmlOut);

htmlExporter.setParameter(JRHtmlExporterParameter. CHARACTER_ENCODING "utf-8" );

htmlExporter.setParameter(JRHtmlExporterParameter. IS_USING_IMAGES_TO_ALIGN , Boolean. FALSE );

htmlExporter.exportReport();


FileOutputStream out2 = new FileOutputStream( new File( "d:\\test1.html" ));

out2.write(htmlOut.toByteArray());


}

catch (Exception e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}


}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多