<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的這個版本的應該很多。供您參考。謝謝。  回復  更多評論   


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    公告

    瘋狂

    導航

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

    統計

    常用鏈接

    留言簿

    隨筆分類(17)

    隨筆檔案(22)

    文章分類(1)

    文章檔案(1)

    工程教程

    牛人BLOG

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲欧洲精品一区二区三区| 中文字幕中韩乱码亚洲大片| 亚洲欧洲精品在线| 91大神免费观看| 91在线亚洲精品专区| 99re免费在线视频| 亚洲综合在线成人一区| 日本一卡精品视频免费| 亚洲理论片在线中文字幕| 精品无码AV无码免费专区| 亚洲精品国产第1页| 99久久久精品免费观看国产| 亚洲免费观看在线视频| 在线观看免费大黄网站| 337P日本欧洲亚洲大胆艺术图| 免费看小12萝裸体视频国产| 成年大片免费高清在线看黄| 亚洲色成人网站WWW永久| 无码人妻久久一区二区三区免费| 亚洲精品91在线| 天天干在线免费视频| 猫咪免费观看人成网站在线| 中文字幕亚洲综合久久菠萝蜜 | 九月婷婷亚洲综合在线| 国产精品1024在线永久免费| 亚洲AV日韩AV无码污污网站| 亚洲成人影院在线观看| 三级黄色免费观看| 亚洲福利电影一区二区?| 四虎影院免费视频| 国产无遮挡又黄又爽免费网站| 久久综合九九亚洲一区| 在线观看成人免费视频| 国产综合免费精品久久久| 亚洲综合综合在线| 国产免费黄色大片| 无码国产精品一区二区免费式芒果 | 亚洲视频在线观看网站| 免费看AV毛片一区二区三区| 中文字幕久无码免费久久| 亚洲六月丁香六月婷婷蜜芽|