var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-20738293-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script')"/>
<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jutleo
    歡迎走進(jìn)有風(fēng)的地方~~
    posts - 63,  comments - 279,  trackbacks - 0
     JasperFillManager.fillReport()這個(gè)方法在使用JDBC數(shù)據(jù)源時(shí)采用一個(gè)打開(kāi)的數(shù)據(jù)庫(kù)連接(getConn),除此之外jasperReport給我們提供了一個(gè)JRDataSource接口,用以實(shí)現(xiàn)我們自己的數(shù)據(jù)源
    JRDataSource接口只有兩個(gè)方法
    public interface JRDataSource
    {
       
    /**
         * 針對(duì)當(dāng)前的數(shù)據(jù)源返回游標(biāo)指向的下一個(gè)
    元素的值,
         *

         
    */
        
    public boolean next() throws JRException;
      
    /**
         * 返回游標(biāo)指向的當(dāng)前值
         *

         
    */
        
    public Object getFieldValue(JRField jrField) throws JRException;
    }
    JRBeanCollectionDataSource
    此種方式是最簡(jiǎn)單的一種,查看API我們就可以發(fā)現(xiàn),JRBeanCollectionDataSource繼承JRAbstractBeanDataSource類(lèi),而JRAbstractBeanDataSource是一個(gè)抽象類(lèi)它間接的實(shí)現(xiàn)了JRDataSource這個(gè)接口,所以我們就可以不用自己去實(shí)現(xiàn)next()/getFieldValue()這兩個(gè)方法了。
            看到JRBeanCollectionDataSource這個(gè)類(lèi)名大概就知道怎么用了吧!
            我們的模板文件還是上篇的JDBC數(shù)據(jù)源的模板,只是沒(méi)有了查詢(xún)語(yǔ)句,手工建立所需的幾個(gè)字段(域)
    新建一vo對(duì)象Person.java,最基本的getter、setter方法
    package org.bulktree.ireport.customdata;

    /**
     * custom data
     * 
     * 
    @author bulktree Email: laoshulin@gmail.com @ Nov 7, 2008
     
    */

    public class Person {
        
    private String pid;
        
    private String name;
        
    private String sex;
        
    private String age;
        
    private String password;
        
    private String department;

        
    public Person(String pid, String name, String sex, String age, String password,
                String department) 
    {
            
    this.pid = pid;
            
    this.name = name;
            
    this.sex = sex;
            
    this.age = age;
            
    this.password = password;
            
    this.department = department;
        }


        
    public Person() {

        }


        
    }


    下來(lái)準(zhǔn)備數(shù)據(jù)
    Person p1 = new Person();
            p1.setAge(
    "23");
            p1.setDepartment(
    "ISoftStone");
            p1.setName(
    "LAOSHULIN");
            p1.setPassword(
    "123456789");
            p1.setPid(
    "2008040516058772hj");
            p1.setSex(
    "man");
    既然它是一個(gè)BeanCollection我們 就來(lái)一個(gè)從conllection吧!
    List<Person> list = new ArrayList<Person>();
            list.add(p1);
    查看API,JRBeanCollectionDataSource的構(gòu)造函數(shù)
    public JRBeanCollectionDataSource(Collection beanCollection)
        
    {
            
    this(beanCollection, true);
        }

        
    /**
         *
         
    */

        
    public JRBeanCollectionDataSource(Collection beanCollection, boolean isUseFieldDescription)
        
    {
            
    super(isUseFieldDescription);
            
            
    this.data = beanCollection;

            
    if (this.data != null)
            
    {
                
    this.iterator = this.data.iterator();
            }

        }
    看看描述我們使用第一個(gè)
    JRDataSource datesource = new JRBeanCollectionDataSource(list);
    這個(gè)數(shù)據(jù)源就構(gòu)造完畢了,很簡(jiǎn)單吧!這樣報(bào)表就可以預(yù)覽了,完整的代碼如下:
    package org.bulktree.ireport.customdata;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
    import net.sf.jasperreports.engine.util.JRLoader;
    import net.sf.jasperreports.view.JRViewer;
    import net.sf.jasperreports.view.JasperViewer;

    public class JasperReportDemo {
        
    public static void main(String[] args) throws Exception {
            JasperReportDemo jrd 
    = new JasperReportDemo();
            jrd.reportMethod(jrd.getMap());
        }


        
    public void reportMethod(Map map) throws Exception {
            JasperReport jasperReport 
    = null;
            JasperPrint jasperPrint 
    = null;

            
    try {
                
    /*
                 * File file = new File("Person.jrxml"); InputStream in = new
                 * FileInputStream(file); // 編譯報(bào)表 jasperReport =
                 * JasperCompileManager.compileReport(in);
                 
    */

                
    // 實(shí)際中編譯報(bào)表很耗時(shí),采用Ireport編譯好的報(bào)表
                jasperReport = (JasperReport) JRLoader
                        .loadObject(
    "D:\\workspace\\Person.jasper");
                
    // 填充報(bào)表
                jasperPrint = JasperFillManager
                        .fillReport(jasperReport, map, getDataSource());
                
    // JasperExportManager.exportReportToHtmlFile(jasperPrint,
                
    // "test.html");
                JasperViewer jasperViewer = new JasperViewer(jasperPrint);
                jasperViewer.setVisible(
    true);
            }
     catch (JRException e) {
                e.printStackTrace();
            }
     catch (FileNotFoundException e) {
                e.printStackTrace();
            }

        }


        
    public Map getMap() {

            Map map 
    = new HashMap();
            map.put(
    "reportTitle""laoshulin");
            
    return map;
        }


        
    public JRDataSource getDataSource() throws Exception {

            
    // 自定義數(shù)據(jù)源
            Person p1 = new Person();
            p1.setAge(
    "23");
            p1.setDepartment(
    "ISoftStone");
            p1.setName(
    "LAOSHULIN");
            p1.setPassword(
    "123456789");
            p1.setPid(
    "2008040516058772hj");
            p1.setSex(
    "man");
            List
    <Person> list = new ArrayList<Person>();
            list.add(p1);

            JRDataSource datesource 
    = new JRBeanCollectionDataSource(list);

            
    return datesource;
        }

    }

    看看效果吧!
    簡(jiǎn)簡(jiǎn)單單的幾行代碼就可以完成一個(gè)簡(jiǎn)單的報(bào)表,我們看到的這些工具欄圖表還有窗口的一些標(biāo)題啊等等都可以自己的定制哦,下來(lái)慢慢介紹!
    posted on 2008-12-12 09:56 凌晨風(fēng) 閱讀(6337) 評(píng)論(10)  編輯  收藏 所屬分類(lèi): iReport + JasperReport 系列

    FeedBack:
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2008-12-12 11:38 | 楊?lèi)?ài)友
    如果某列顯示的是公司地址,有的公司地址“變態(tài)”,多大200個(gè)漢字,有的只有十幾個(gè),那你能動(dòng)態(tài)設(shè)定這一列的寬度和高度嗎?
    以前我沒(méi)有做到,只能設(shè)定足夠的寬度和高度來(lái)顯示這個(gè)地址。  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2008-12-12 12:55 | 凌晨風(fēng)
    哈哈 這個(gè)問(wèn)題是很多報(bào)表都會(huì)出現(xiàn)的問(wèn)題,那要看你的紙張了,要是紙張不限制的話(huà)你可以設(shè)置盡可能的大些防止撐開(kāi)影響美觀,要是想動(dòng)態(tài)改變也不是很難,jasperReport可以動(dòng)態(tài)的改變你所涉及的任何域的所有屬性,所以你說(shuō)的那個(gè)就很容易實(shí)現(xiàn),這些東西我都有測(cè)試過(guò),之后有空會(huì)都寫(xiě)出來(lái)的  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2009-01-06 16:05 | zsyzk@qq.com
    JasperViewer jasperViewer = new JasperViewer(jasperPrint);
    jasperViewer.setVisible(true);

    直接這樣打開(kāi)預(yù)覽,關(guān)閉后,會(huì)把WEB服務(wù)都關(guān)掉呢,怎么解決這個(gè)問(wèn)題???  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2009-01-07 09:03 | 凌晨風(fēng)
    怎么會(huì)關(guān)閉web服務(wù)呢?那你要檢查一下你的代碼了,建議你實(shí)現(xiàn)自己的JasperViewer  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源[未登錄](méi)
    2009-03-27 17:40 | 西西

    這樣寫(xiě)就不會(huì)關(guān)掉了
    JasperViewer jasperViewer = new JasperViewer(jasperPrint,false);   回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2009-08-26 11:03 | 痞子

    JasperViewer jrview=new JasperViewer(jasperPrint,false);
    就不會(huì)關(guān)閉服務(wù)了

      回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源[未登錄](méi)
    2009-09-02 11:30 | footprint
    博主能不能提供一下XML文件呀?DETAIL域總是空白  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2014-04-19 10:02 | rober
    @footprint
    就是,LZ XML配置給一個(gè)吧,不知道怎么配置啊~~~  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源
    2014-05-15 14:09 | 周研
    List<OauthApi> list = reportService.getApiList();
    JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(
    list);

    當(dāng)list為空時(shí),生成的pdf或者excel文件不會(huì)報(bào)錯(cuò),但是沒(méi)有了title和Column Header了  回復(fù)  更多評(píng)論
      
    # re: iReport+jasperReport之BEAN數(shù)據(jù)源[未登錄](méi)
    2014-11-12 17:17 | hh
    @凌晨風(fēng)
    瞎說(shuō),是可以遍歷所有燃素,但不能改變屬性,因?yàn)橐坏┠0灞炯_定,就無(wú)法改,只能改變其中的值  回復(fù)  更多評(píng)論
      

    <2009年1月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(11)

    我參與的團(tuán)隊(duì)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    新聞分類(lèi)

    新聞檔案

    收藏夾

    圍脖

    最新隨筆

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产成人久久精品动漫| 亚洲国产精品综合久久网络| 青青草原精品国产亚洲av| 国产免费久久精品丫丫| 亚洲精品无码mv在线观看网站| A级毛片成人网站免费看| 亚洲精品国产字幕久久不卡| a级成人免费毛片完整版| 亚洲av无码国产精品色午夜字幕| a毛看片免费观看视频| 亚洲影院在线观看| 亚洲一区免费在线观看| 国产亚洲精品VA片在线播放| 黄色成人网站免费无码av| 色欲色欲天天天www亚洲伊| 亚洲成a人片在线观看久| 青青操免费在线视频| 亚洲春色另类小说| 麻豆精品国产免费观看| 一本到卡二卡三卡免费高| 亚洲熟妇无码AV在线播放| 最近免费视频中文字幕大全| 亚洲一区无码中文字幕乱码| 又粗又硬又黄又爽的免费视频| 一级毛片免费毛片毛片| 亚洲精品无码久久久久久久 | 少妇高潮太爽了在线观看免费| 亚洲最大中文字幕无码网站 | 亚洲中文字幕无码久久精品1| 久久精品免费视频观看| 亚洲免费福利在线视频| 亚洲人成网站18禁止一区| 91高清免费国产自产拍2021| 亚洲爆乳无码专区www| 亚洲中文字幕无码永久在线 | 免费看又黄又爽又猛的视频软件| 红杏亚洲影院一区二区三区| 日韩在线播放全免费| 老司机精品视频免费| 亚洲资源在线观看| 国产a级特黄的片子视频免费|