本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0

          jasperreport中可以使用List作為數據源,使用格式如下.
          List list=this.customerDao.getAllCustomer();  //得到所有客戶
          JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
             JasperPrint jasperPrint = JasperFillManager.fillReport(
               reportFilePath, parameters, ds);
          得填充數據后,即可輸出顯示到PDF,Excel,Html
          到PDF:
          public byte[] generatePDF(String begCustNo, String endCustNo,
             String reportTitle, String reportFilePath) throws DemoException {
            // TODO Auto-generated method stub
           //begCustNo,endCustNo分別為查詢傳入的開始編號,結束編號.
            jdbcCustomerDao = new JdbcCustomerDao();
            Map parameters = new HashMap();
            parameters.put("ReportTitle", reportTitle);//報表標題
            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調用方法:
           <%
              
             
           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,"客戶資料明細表",filePath);
            }else if(type.equals("Excel")){
             bytes=custs.generateExcel(begNo,endNo,"客戶資料明細表",filePath);
            }else
               bytes=custs.generateHtml(begNo,endNo,"客戶資料明細表",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","裴德萬");
                      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 有貓相伴的日子 閱讀(5187) 評論(4)  編輯  收藏 所屬分類: 報表

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

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


          網站導航:
           
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 绍兴县| 梅河口市| 涞水县| 商洛市| 巴青县| 贵州省| 诸城市| 丹寨县| 新泰市| 介休市| 怀来县| 江津市| 宿州市| 陵川县| 丰县| 泸西县| 河北省| 财经| 七台河市| 绥江县| 赫章县| 大港区| 习水县| 弥勒县| 平度市| 桂阳县| 旬邑县| 武威市| 运城市| 陵水| 宜宾县| 惠州市| 宜阳县| 上犹县| 滨海县| 景宁| 武汉市| 浮梁县| 桓仁| 天峨县| 澎湖县|