本站不再更新,歡迎光臨 java開(kāi)發(fā)技術(shù)網(wǎng)
          隨筆-230  評(píng)論-230  文章-8  trackbacks-0

          jasperreport中可以使用List作為數(shù)據(jù)源,使用格式如下.
          List list=this.customerDao.getAllCustomer();  //得到所有客戶(hù)
          JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
             JasperPrint jasperPrint = JasperFillManager.fillReport(
               reportFilePath, parameters, ds);
          得填充數(shù)據(jù)后,即可輸出顯示到PDF,Excel,Html
          到PDF:
          public byte[] generatePDF(String begCustNo, String endCustNo,
             String reportTitle, String reportFilePath) throws DemoException {
            // TODO Auto-generated method stub
           //begCustNo,endCustNo分別為查詢(xún)傳入的開(kāi)始編號(hào),結(jié)束編號(hào).
            jdbcCustomerDao = new JdbcCustomerDao();
            Map parameters = new HashMap();
            parameters.put("ReportTitle", reportTitle);//報(bào)表標(biāo)題
            List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
             try {
             JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
             JasperPrint jasperPrint = JasperFillManager.fillReport(
               reportFilePath, parameters, ds);   return JasperExportManager.exportReportToPdf(jasperPrint);
            } catch (JRException e) {
             throw new DemoException("Report Export Failed.");
            }
           }
          到Html:
          public byte[] generateHtml(String begCustNo, String endCustNo,
             String reportTitle, String reportFilePath) throws DemoException {
            jdbcCustomerDao = new JdbcCustomerDao();
            Map parameters = new HashMap();
            parameters.put("ReportTitle", reportTitle);
            List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
            System.out.println("list size is :" + list.size());
            JRHtmlExporter exporter = new JRHtmlExporter();
            ByteArrayOutputStream oStream = new ByteArrayOutputStream();
            try {
             JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
             JasperPrint jasperPrint = JasperFillManager.fillReport(
               reportFilePath, parameters, ds);
             exporter.setParameter(
               JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
               Boolean.FALSE);
             exporter
               .setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
             exporter
               .setParameter(JRExporterParameter.CHARACTER_ENCODING, "GBK");
             exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
             exporter.exportReport();
             byte[] bytes = oStream.toByteArray();
             return bytes;
            } catch (JRException e) {
             throw new DemoException("Report Export Failed.");
            }
           }
          到Excel:
          public byte[] generateExcel(String begCustNo, String endCustNo,
             String reportTitle, String reportFilePath) throws DemoException {
            jdbcCustomerDao = new JdbcCustomerDao();
            Map parameters = new HashMap();
            parameters.put("ReportTitle", reportTitle);
            List list = jdbcCustomerDao.getAllCustomer(begCustNo, endCustNo);
            System.out.println("list size is :" + list.size());
            JRXlsExporter exporter = new JRXlsExporter(); // Excel
            ByteArrayOutputStream oStream = new ByteArrayOutputStream();
            try {
             JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
             JasperPrint jasperPrint = JasperFillManager.fillReport(
               reportFilePath, parameters, ds);
             exporter
               .setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
             exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, oStream);
             exporter.setParameter(
               JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
               Boolean.TRUE);
             exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
               Boolean.FALSE);
             exporter.setParameter(
               JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
               Boolean.FALSE);
             exporter.exportReport();
             byte[] bytes = oStream.toByteArray();
             return bytes;

            } catch (JRException e) {
             throw new DemoException("Report Export Failed.");
            }
           }

          jsp調(diào)用方法:
           <%
              
             
           String filePath=getServletContext().getRealPath("/")+"report.jasper"; 

           CustomerServiceImpl  custs=new CustomerServiceImpl();
              byte[] bytes=null;
            String begNo=request.getParameter("beginCustNo");
            String endNo=request.getParameter("endCustNo");
            String type=request.getParameter("type");

            if(type.equals("Pdf")){ 
                bytes= custs.generatePDF(begNo,endNo,"客戶(hù)資料明細(xì)表",filePath);
            }else if(type.equals("Excel")){
             bytes=custs.generateExcel(begNo,endNo,"客戶(hù)資料明細(xì)表",filePath);
            }else
               bytes=custs.generateHtml(begNo,endNo,"客戶(hù)資料明細(xì)表",filePath);


           if(bytes!=null){
            if(type.equals("Pdf")){
                   response.setContentType("application/pdf");
            }else if(type.equals("Excel")){
               response.setContentType("application/vnd.ms-excel");
            }else
             response.setContentType("text/html");
              response.setContentLength(bytes.length);
              ServletOutputStream ouputStream = response.getOutputStream();
              ouputStream.write(bytes,0,bytes.length);
              ouputStream.flush();
              ouputStream.close();
           }else
           {
            out.println("error");
           }
           

           

            %>

          ======================================
          servlet 輸出

              public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, IOException {
                  Connection conn
          =null;
                  
          try{
                      Class.forName(
          "com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
                      conn
          =DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1481;DatabaseName=pdw","sa","123456");
                      ServletContext servletContext
          =this.getServletContext();
                      Map parameters
          =new HashMap();
                      parameters.put(
          "vname","裴德萬(wàn)");
                      File reportfile
          =new File(servletContext.getRealPath("/classes.jasper"));
                      System.out.println(reportfile.getPath());
                      
          byte[] bytes=JasperRunManager.runReportToPdf(reportfile.getPath(),parameters,conn);
                      response.setContentType(
          "application/pdf");
                      response.setContentLength(bytes.length);
                      ServletOutputStream outputStream
          =response.getOutputStream();
                      outputStream.write(bytes,
          0,bytes.length);
                      outputStream.flush();
                      outputStream.close();
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }
              }
          posted on 2007-11-01 18:19 有貓相伴的日子 閱讀(5203) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): 報(bào)表

          評(píng)論:
          # re: jasperreport使用list輸出[未登錄](méi) 2008-07-25 14:06 | winnie
          你好,但是我有個(gè)問(wèn)題請(qǐng)教一下你,就是生成Excel的時(shí)候用list作為數(shù)據(jù)源,如果我list.size=0為什么會(huì)生成一個(gè)空的Excel呢,連靜態(tài)的東西,還有定義的列都沒(méi)有!我覺(jué)得應(yīng)該只是沒(méi)有統(tǒng)計(jì)的數(shù)據(jù)而已啊!  回復(fù)  更多評(píng)論
            
          # re: jasperreport使用list輸出 2008-09-08 10:19 | zb
          report.jasper是什么樣的  回復(fù)  更多評(píng)論
            
          # re: jasperreport使用list輸出[未登錄](méi) 2011-09-28 17:17 |
          List list=this.customerDao.getAllCustomer(); //得到所有客戶(hù)
          JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
          JasperPrint jasperPrint = JasperFillManager.fillReport(
          reportFilePath, parameters, ds);
          你確定這些代碼就夠了,能跑通,我反正沒(méi)通,報(bào)ClassNotFound的Exception  回復(fù)  更多評(píng)論
            
          # re: jasperreport使用list輸出 2014-07-08 11:28 | villain
          @winnie
          我也有這個(gè)問(wèn)題啊  回復(fù)  更多評(píng)論
            

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


          網(wǎng)站導(dǎo)航:
           
          本站不再更新,歡迎光臨 java開(kāi)發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 永泰县| 桑植县| 河北省| 平潭县| 雅江县| 九龙县| 读书| 石门县| 乐昌市| 镇巴县| 万盛区| 汾阳市| 资溪县| 眉山市| 廊坊市| 庄河市| 绥宁县| 潮州市| 嘉鱼县| 光泽县| 定襄县| 江川县| 都匀市| 黎川县| 长乐市| 岳普湖县| 习水县| 长海县| 河南省| 阿合奇县| 开封市| 乡城县| 龙胜| 保亭| 垫江县| 当雄县| 香河县| 读书| 涟水县| 图们市| 上思县|