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无码一区二区三区在线播放| 亚洲成av人无码亚洲成av人| 看成年女人免费午夜视频| 男女一进一出抽搐免费视频| 无码国产精品一区二区免费式芒果| 国产麻豆视频免费观看| 四虎影视精品永久免费| 久久亚洲AV无码西西人体| 亚洲另类激情综合偷自拍| 国产精品高清视亚洲一区二区| 免费看内射乌克兰女| 大地资源在线资源免费观看| 99久久精品日本一区二区免费 | a级毛片无码免费真人久久| 国产精品永久免费10000| 免费观看国产小粉嫩喷水| 久久久久亚洲av无码尤物| 亚洲日韩亚洲另类激情文学| 成全视成人免费观看在线看| 免费黄色福利视频| 亚洲高清无码专区视频| 亚洲视频在线免费观看| 精品久久久久久亚洲中文字幕| 久久午夜无码免费| 国产无遮挡又黄又爽免费视频| 亚洲av午夜成人片精品网站| 亚洲乱人伦中文字幕无码| 久久免费精品一区二区| 波多野结衣久久高清免费 | 中文在线免费不卡视频| 永久免费av无码网站韩国毛片 | 久久精品国产精品亚洲下载| 亚洲成a人片在线观看播放| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 看亚洲a级一级毛片| 91短视频在线免费观看| 亚洲免费在线观看| 中文字幕在线观看亚洲视频| 色播在线永久免费视频网站|