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

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

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

    Java學(xué)習(xí)

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對(duì)文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

     

    關(guān)于Ireport,JasperReport生成Excel報(bào)表,chart 圖 不顯示的問題

    問題描述:  用Ireport 和 JasperReports生成報(bào)表,在PDF中能顯示2D chart 和 3D chart圖,但是在Excel和html報(bào)表中,chart圖不能顯示。

    代碼:--------------------
     

        public String generateReport() throws Exception{

    /*
    *
    *
    *去掉不相關(guān)的部分代碼
    *
    *
    */
            HashMap parameters=new HashMap();
            parameters.put("user", userDetails.getLoginName());
            parameters.put("fromDate", this.dateFrom);
            parameters.put("toDate", this.dateTo);
            parameters.put("ownerName", this.ownerName);
            parameters.put("regNo", this.vehicleNo);       
            parameters.put("SUBREPORT_DIR", reportGenerator.getReportPath()+"/");
           
            if(this.repost_type.equals("html")){//html
               
                //show piechart
                if("".equalsIgnoreCase(this.pieValue) && this.showTable1 == false && this.showTable2 == false && this.showTable3 == false){
                    initErrorBean(errorManager.getMessage("valid.no.record"));
                    return null;
                }
            }
            else{    //excel || pdf
                this.setShowTable1(false);
                this.setShowTable2(false);
                this.setShowTable3(false);
                this.setPieFlag(false);
                if(this.pieValue == null || this.pieValue.equals("")){
                     //TODO: add err msg
                     return "";
                }
                if("1".equalsIgnoreCase(this.getFilter_asset_by())){
                    if(null == utilizationList1 || utilizationList1.size() == 0
                            || null == utilizationList2 || utilizationList2.size() == 0){
                           //TODO: add err msg
                           return "";
                    }
                    parameters.put("sub1_title", this.getTopchart());
                    parameters.put("regNo", "ALL");   
                    parameters.put("MyDatasource_sub1", new JRBeanCollectionDataSource(utilizationList1));
                    parameters.put("MyDatasource_sub2", new JRBeanCollectionDataSource(utilizationList2));
                }
                else{
                    if(null == indutilizationList3 || indutilizationList3.size() == 0){
                           //TODO: add err msg
                           return "";
                    }
                    parameters.put("MyDatasource", new JRBeanCollectionDataSource(indutilizationList3));
                }
           
               List chatList = new ArrayList();
               String []type = this.pieValue.split(":");     //mannual immedate advance vacant 
               if(type.length != 4){
                   //TODO: add err msg
                   return "";
               }
               String [] manualDetail = type[0].split(",");
               String [] immedateDetail = type[1].split(",");
               String [] advanceDetail = type[2].split(",");
               String [] vacantDetail = type[3].split(",");
               if(manualDetail.length != 3 || immedateDetail.length != 3 || advanceDetail.length != 3 || vacantDetail.length != 3){
                   //TODO: add err msg
                   return "";
               }
               float allTime = 0.0f;
               int maxTime       = 0;
               int manualTime    = Integer.valueOf(manualDetail[1].replaceAll(" ", ""));
               int immedateTime  = Integer.valueOf(immedateDetail[1].replaceAll(" ", ""));
               int advanceTime   = Integer.valueOf(advanceDetail[1].replaceAll(" ", ""));
               int vacantTime    = Integer.valueOf(vacantDetail[1].replaceAll(" ", ""));
              
               maxTime = Math.max(Math.max(manualTime, immedateTime), Math.max(advanceTime, vacantTime));
               allTime = manualTime + immedateTime + advanceTime + vacantTime;
              
               int manualPerValue   = Math.round(manualTime/allTime*100);
               int immedatePerValue = Math.round(immedateTime/allTime*100);
               int advancePerValue  = Math.round(advanceTime/allTime*100);
               int vacantPerValue   = Math.round(vacantTime/allTime*100);
               boolean dealMax      = false;
              
               Piechat manualChat = new Piechat();
               manualChat.setLegendItem(manualDetail[0]);
               manualChat.setPerValue(""+manualPerValue+"%");
               if(maxTime == manualTime){
                   manualChat.setPerValue(""+(100 - (immedatePerValue + advancePerValue + vacantPerValue))+"%");
                   dealMax = true;
               }
               manualChat.setValue(manualTime);
              
               Piechat immedateChat = new Piechat();
               immedateChat.setLegendItem(immedateDetail[0]);
               immedateChat.setPerValue(""+immedatePerValue+"%");
               if(!dealMax && maxTime == immedateTime){
                   immedateChat.setPerValue(""+(100 - (manualPerValue + advancePerValue + vacantPerValue))+"%");
                   dealMax = true;
               }
               immedateChat.setValue(immedateTime);
              
               Piechat advanceChat = new Piechat();
               advanceChat.setLegendItem(advanceDetail[0]);
               advanceChat.setPerValue(""+advancePerValue+"%");
               if(!dealMax && maxTime == advanceTime){
                   advanceChat.setPerValue(""+(100 - (manualPerValue + immedatePerValue + vacantPerValue))+"%");
                   dealMax = true;
               }
               advanceChat.setValue(advanceTime);
              
               Piechat vacantChat = new Piechat();
               vacantChat.setLegendItem(vacantDetail[0]);
               vacantChat.setPerValue(""+vacantPerValue+"%");
               if(!dealMax && maxTime == vacantTime){
                   vacantChat.setPerValue(""+(100 - (manualPerValue + immedatePerValue + advancePerValue))+"%");
               }
               vacantChat.setValue(vacantTime);
              
               chatList.add(manualChat);
               chatList.add(immedateChat);
               chatList.add(advanceChat);
               chatList.add(vacantChat);
               String []title = vacantDetail[2].split("\\|");
               if(title.length != 2){
                   return "";
               }
               parameters.put("piechat_title", title[1]);
           
                DateFormat format = new SimpleDateFormat("yyyyMMdd",Locale.ENGLISH);
              String reportName = format.format(new Date())+utilizationStatisticsReport;
             
              if(this.repost_type.equals("excel")){ //excel            
                  InputStream inputStream = reportGenerator.getReportStream("Utilization_Statistics_Report",parameters,chatList,ReportConstants.REPORT_XLS);
                  reportGenerator.renderReportToClient(inputStream, reportName,ReportConstants.REPORT_XLS);       
                  }else{ //pdf
                    InputStream inputStream = reportGenerator.getReportStream("Utilization_Statistics_Report",parameters,chatList,ReportConstants.REPORT_PDF.toLowerCase());
                    reportGenerator.renderReportToClient(inputStream, reportName,ReportConstants.REPORT_PDF.toLowerCase());       
                  }   
            }
            return "";
        }



        public  InputStream getXLSReportStream(JasperPrint jasperPrint, String fileName, List jasperPrintList)throws ReportException {
            try {
               
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
               
                //JRXlsExporter exporter = new JRXlsExporter();
                JExcelApiExporter exporter=new JExcelApiExporter();

                if(jasperPrint != null)
                {
                    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                }
               
                if(jasperPrintList != null)
                {
                    exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST,jasperPrintList);
                }
               
                if(jasperPrint == null && jasperPrintList == null)
                    throw new ReportException("");
               
                exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);           
               
                // Add by johnny
                exporter.setParameter(
                        JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
                        Boolean.TRUE);
                exporter.setParameter(
                        JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
                        Boolean.FALSE);
                exporter.exportReport();
               
                byte[] reportBytes = baos.toByteArray();
               
                return new ByteArrayInputStream(reportBytes);
               
            } catch (Exception e) {
                e.printStackTrace();
                throw new ReportException("", e);
            }
           
        }


    解決方法:看到紅色部分沒有,就是因?yàn)殚_始用的上面注釋點(diǎn)的JRXlsExporter,就是因?yàn)檫@個(gè)類,不支持圖片。所以后來改成JExcelApiExporter(),問題就解決了。
      希望我的這篇文章 能遇到和我同樣的問題的朋友們,我在這個(gè)問題上花費(fèi)了2 天時(shí)間,我是一個(gè)一個(gè)的排查,終于找到了問題的所在



    posted on 2008-06-17 13:04 找個(gè)美女做老婆 閱讀(4911) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: 關(guān)于Ireport,JasperReport生成Excel報(bào)表,chart 圖 不顯示的問題 2008-11-11 15:11 大模大樣

    非常感謝,你幫我解決了別外一個(gè)問題。。。  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲av无码成人精品国产| 久久狠狠爱亚洲综合影院| 日韩免费高清一级毛片| 免费无码又爽又刺激高潮| 亚洲人成77777在线观看网| 国语成本人片免费av无码| www.亚洲日本| 日本不卡高清中文字幕免费| 精品国产日韩亚洲一区91| 免费一级毛片在线播放不收费| 一级a性色生活片久久无少妇一级婬片免费放 | 午夜a级成人免费毛片| 亚洲av永久无码精品秋霞电影秋| 日韩高清在线高清免费| 国产亚洲精品2021自在线| 亚洲第一成人影院| 中文字幕免费视频精品一| 久久精品国产亚洲av四虎| 午夜老司机永久免费看片| 亚洲妇女水蜜桃av网网站| 黄页网站在线看免费| 九九精品国产亚洲AV日韩| 亚洲毛片不卡av在线播放一区| 99免费在线视频| 亚洲理论片在线中文字幕| 色吊丝最新永久免费观看网站 | 亚洲AV无码久久精品蜜桃| 手机看黄av免费网址| 粉色视频免费入口| 久久精品亚洲一区二区| 黄色成人网站免费无码av| 日韩在线视频线视频免费网站| 久久亚洲精品成人综合| 成在人线AV无码免费| 国产成人1024精品免费| 亚洲激情视频网站| 免费一级黄色毛片| 2021在线观看视频精品免费| jzzijzzij在线观看亚洲熟妇| 久久久青草青青亚洲国产免观| 四虎永久在线观看免费网站网址 |