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

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

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

    嘰哩咕嚕

    君子如玉,上善若水

    從零開始認識 JasperReport + IReport (JasperReport部分)

    因參與公司南非的項目,需要應用在Linux平臺,所以報表改用JasperReport.國內的項目報表還是用FastReport(看來還是結晶啊).

    廢話少說,我從delphi平臺轉到RCP開發才不過兩月時間,以前從未接觸過JasperReport.(簡稱為JR)
    今天上級要求熟悉JR,為節后國際化報表做準備.以下為我從0開始的一些記錄.
    目的: 力求理解JasterReport的各個概念及之間的關系.熟悉打印報表流程的來龍去脈,主要的調用方法(如加載報表,打印,預覽).       
            報表設計器的使用.

    1. IReport 設計器,就像FastReport一樣有這樣的設計器.但名字叫IReprot,為安裝文件,我安裝的版本為
        iReport-3.0.0-windows-installer.exe,同事傳我的,下載地址百度下下就有了.
    2. JasperReport為一個開發Jar包,就是相當于FastReport的報表控件.
    3. 初始化JasterReport
    private static JasperPrint initJasperReport(String fileName,
                Map<String, Object> paramMap, List data) throws IOException,
                MalformedURLException, JRException {
            ...
            InputStream is = fullPathString.toURL().openStream();  //這句以上代碼都是處理報表文件路徑
            JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);       
            Object[] objArray = data.toArray();
            //JasperReport對象  + Map對象 + List 對象 =JasperPrint對象
            final JasperPrint jasperPrint = JasperFillManager.fillReport(
                    jasperReport, paramMap, new JRBeanArrayDataSource(objArray));
            return jasperPrint;
        }

    4.查找默認打印機(打印服務).
    public static boolean directPrintByPrintName(final JasperPrint jasperPrint) {
            if (jasperPrint != null) {
                try {
                    PrintService[] PSs = PrinterJob.lookupPrintServices(); //java.awt.*包.查找所有打印服務.
                    PrintService ps = null;
                    if (PSs != null && PSs.length > 1&& !Assert.isNull(MzTransParam.PrinterOfSyddyj)) {
                        for (int i = 0; i < PSs.length; i++) {
                            String sps = PSs[i].toString();
                            sps = sps.replace("Win32 Printer : ", ""); //$NON-NLS-1$ //$NON-NLS-2$
                            //MzTransParam.PrinterOfSyddyj 我們系統設置的默認打印機名稱.
                            if (sps.equalsIgnoreCase(MzTransParam.PrinterOfSyddyj)) { 
                                ps = PSs[i];//得到打印服務對象
                                break;
                            }
                        }
                    }
    5.設置打印參數,好多個參數
                    if (ps != null) {
                        long start = System.currentTimeMillis();
                        PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
                        printRequestAttributeSet.add(MediaSizeName.ISO_A5);// 處方模板是A5紙  第一個參數對象   

                        PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
                        printServiceAttributeSet.add(new PrinterName(ps.getName(),null)); //第二個參數對象

                        final JRPrintServiceExporter exporter = new JRPrintServiceExporter(); //關鍵的對象,其它的對象都是為他服務的
                        //以下為設置參數
                        exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
                        exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET,
                                        printRequestAttributeSet);
                        exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,
                                        printServiceAttributeSet);
                        exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,
                                        Boolean.FALSE);
                        exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,
                                        Boolean.FALSE);
    6.關鍵的出場,在線程里導出報表.(打印)
                    Thread thread = new Thread(new Runnable() {
                            public void run() {
                                try {
                                    exporter.exportReport(); //就這么一句.exporter對象導出報表.
                                } catch (Exception ex) {
                                    System.err.println(ex.getLocalizedMessage());
                                }
                            }
                        });
                        thread.start();
    7.采用默認打印.
                    } else { //此處的else接的是5條的if
                        Thread thread = new Thread(new Runnable() {
                            public void run() {
                                try {
                                    //jasperPrint 對象就是JasperPrintManager生成的.參考上面的代碼.
                                    JasperPrintManager.printReport(jasperPrint,false);  //這一句應該是默認打印.
                                } catch (Exception ex) {
                                }
                            }
                        });
                        thread.start();
                    }
                } catch (Exception ex) {
                    return false;
                }

            }
            return true;}
    未完.


       

    posted on 2011-09-09 07:49 嘰哩咕嚕 閱讀(3991) 評論(3)  編輯  收藏

    評論

    # re: 從零開始認識 JasperReport + IReport[未登錄] 2011-09-09 08:08 kevin

    建議你使用ireport 4.1.1功能上比3.0要強大得多。  回復  更多評論   

    # re: 從零開始認識 JasperReport + IReport (JasperReport部分) 2011-09-11 04:36 wangxunhua

    @kevin
    感謝Kevin兄指點,因我現在的主要的工作不參與開發,只參與報表設計,但現在對jasperreport 還沒有一個整體的概念.3.0,4.1.1強大之處自是無從談起.不知可不可以指點下3.0 和4.1.1的區別.4.1.1的新特性.或是推薦一下文章.  回復  更多評論   

    # re: 從零開始認識 JasperReport + IReport (JasperReport部分)[未登錄] 2011-09-13 08:37 kevin

    @wangxunhua
    4.1.1的話,支持新的html組件以及google map,以及修正了若干的導出報表excel 和word的bug,采用了新的生成器。目前最新的版本是4.1.2,開發的話,使用3.7的這個版本的應該很多。供您參考。謝謝。  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    公告

    瘋狂

    導航

    <2011年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    統計

    常用鏈接

    留言簿

    隨筆分類(17)

    隨筆檔案(22)

    文章分類(1)

    文章檔案(1)

    工程教程

    牛人BLOG

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品久久丫| 久久99亚洲网美利坚合众国| 粉色视频在线观看www免费| 四虎成人精品一区二区免费网站 | 国产99精品一区二区三区免费 | 亚洲毛片免费视频| 亚洲mv国产精品mv日本mv| 成年人在线免费看视频| 亚洲av无码专区在线电影| av无码东京热亚洲男人的天堂| 成人a毛片免费视频观看| 亚洲国产精品一区二区久久hs| 久久青草国产免费观看| 亚洲av无码片区一区二区三区| 全免费a级毛片免费看不卡| 免费人成网站永久| 久久精品国产亚洲av四虎| 免费人成在线观看69式小视频| 亚洲变态另类一区二区三区| 亚洲精品岛国片在线观看| 久久久国产精品福利免费| 亚洲AV综合色区无码二区偷拍| 国产片免费在线观看| 三级黄色免费观看| 亚洲午夜成激人情在线影院| 免费观看的av毛片的网站| 精品多毛少妇人妻AV免费久久| 久久精品国产亚洲AV嫖农村妇女 | 在线天堂免费观看.WWW| 国产精品亚洲а∨无码播放不卡| 在线A亚洲老鸭窝天堂| 免费AA片少妇人AA片直播| 免费大片av手机看片高清| 水蜜桃亚洲一二三四在线| 在线观看无码的免费网站| 中国一级特黄的片子免费 | 亚洲网站在线免费观看| 激情小说亚洲图片| 久久亚洲精品成人AV| 国产无遮挡吃胸膜奶免费看 | 最近免费中文字幕大全免费|