vjame

          優(yōu)化代碼是無(wú)止境的
          隨筆 - 65, 文章 - 9, 評(píng)論 - 26, 引用 - 0
          數(shù)據(jù)加載中……

          JasperReports學(xué)習(xí)筆記5-其它數(shù)據(jù)生成動(dòng)態(tài)的報(bào)表(WEB)



          一、空數(shù)據(jù)(Empty Datasources)
          就是說(shuō)JRXML文件里面的內(nèi)容都是靜態(tài)的,直接使用
          JREmptyDataSource就行了
          JasperRunManager.runReportToPdfStream(reportStream,  
          servletOutputStream, new HashMap(), new JREmptyDataSource());

          二、Map數(shù)組(Map Datasources)
          有的時(shí)候數(shù)據(jù)不一定要從數(shù)據(jù)庫(kù)里面來(lái),還有可能從Map數(shù)組里面來(lái)成生Map[]的方法

          private Map[] initializeMapArray()
          {
          //你可以把數(shù)組里面的每個(gè)map看成一個(gè)對(duì)象,就相于數(shù)據(jù)庫(kù)里面的每個(gè)字段
          HashMap[] reportRows = new HashMap[4];
          HashMap row1Map = new HashMap();
          HashMap row2Map = new HashMap();
          HashMap row3Map = new HashMap();
          HashMap row4Map = new HashMap();
          row1Map.put("tail_num", "N263Y");
          row1Map.put("aircraft_serial", "T-11");
          row1Map.put("aircraft_model", "39 ROSCOE TRNR RACER");
          row1Map.put("engine_model", "R1830 SERIES");
          row2Map.put("tail_num", "N4087X");
          row2Map.put("aircraft_serial", "BA100-163");
          row2Map.put("aircraft_model", "BRADLEY AEROBAT");
          row2Map.put("engine_model", "R2800 SERIES");
          row3Map.put("tail_num", "N43JE");
          row3Map.put("aircraft_serial", "HAYABUSA 1");
          row3Map.put("aircraft_model", "NAKAJIMA KI-43 IIIA");
          row3Map.put("engine_model", "R1830 SERIES");
          row4Map.put("tail_num", "N912S");
          row4Map.put("aircraft_serial", "9973CC");
          row4Map.put("aircraft_model", "PA18-150");
          row4Map.put("engine_model", "R-1820 SER");
          reportRows[0] = row1Map;
          reportRows[1] = row2Map;
          reportRows[2] = row3Map;
          reportRows[3] = row4Map;
          return reportRows;
          }


          生成JRMapArrayDataSource對(duì)象
          private JRDataSource createReportDataSource()  
          {  
          JRMapArrayDataSource dataSource;  
          Map[] reportRows = initializeMapArray();  
          dataSource = new JRMapArrayDataSource(reportRows);  
          return dataSource;  
          }


          三、Map集合
           
          private JRDataSource createReportDataSource()
          {
          JRMapCollectionDataSource dataSource;
          Collection reportRows = initializeMapCollection();
          dataSource = new JRMapCollectionDataSource(reportRows);
          return dataSource;
          }
          private Collection initializeMapCollection()
          {
          ArrayList reportRows = new ArrayList();
          HashMap row1Map = new HashMap();
          HashMap row2Map = new HashMap();
          HashMap row3Map = new HashMap();
          HashMap row4Map = new HashMap();
          row1Map.put("tail_num", "N263Y");
          row1Map.put("aircraft_serial", "T-11");
          row1Map.put("aircraft_model", "39 ROSCOE TRNR RACER");
          row1Map.put("engine_model", "R1830 SERIES");
          row2Map.put("tail_num", "N4087X");
          row2Map.put("aircraft_serial", "BA100-163");
          row2Map.put("aircraft_model", "BRADLEY AEROBAT");
          row2Map.put("engine_model", "R2800 SERIES");
          row3Map.put("tail_num", "N43JE");
          row3Map.put("aircraft_serial", "HAYABUSA 1");
          row3Map.put("aircraft_model", "NAKAJIMA KI-43 IIIA");
          row3Map.put("engine_model", "R1830 SERIES");
          row4Map.put("tail_num", "N912S");
          row4Map.put("aircraft_serial", "9973CC");
          row4Map.put("aircraft_model", "PA18-150");
          row4Map.put("engine_model", "R-1820 SER");
          reportRows.add(row1Map);
          reportRows.add(row2Map);
          reportRows.add(row3Map);
          reportRows.add(row4Map);
          return reportRows;
          }


          JRDataSource dataSource = createReportDataSource();  
          JasperRunManager.runReportToPdfStream(reportStream,  
          servletOutputStream, new HashMap(), dataSource); 



          四、對(duì)象數(shù)組(Java Objects as Datasources)對(duì)象JAVABEAN

          private JRDataSource createReportDataSource()
          {
          JRBeanArrayDataSource dataSource;
          AircraftData[] reportRows = initializeBeanArray();
          dataSource = new JRBeanArrayDataSource(reportRows);
          return dataSource;
          }

          private AircraftData[] initializeBeanArray()
          {
          AircraftData[] reportRows = new AircraftData[4];
          reportRows[0] = new AircraftData("N263Y", "T-11", "39 ROSCOE TRNR
          RACER", "R1830 SERIES");
          reportRows[1] = new AircraftData("N4087X", "BA100-163", "BRADLEY
          AEROBAT", "R2800 SERIES");
          reportRows[2] = new AircraftData("N43JE", "HAYABUSA 1", "NAKAJIMA
          KI-43 IIIA", "R1830 SERIES");
          reportRows[3] = new AircraftData("N912S", "9973CC", "PA18-150",
          "R-1820 SER");
          return reportRows;
          }

          //最后servlet里面調(diào)用
          JRDataSource dataSource = createReportDataSource();
          JasperRunManager.runReportToPdfStream(reportStream,
          servletOutputStream, new HashMap(), dataSource);



          五、對(duì)象集合
          和對(duì)象數(shù)組基本上一樣,就是最后生成的是JRBeanCollectionDataSource

          private JRDataSource createReportDataSource()
          {
          JRBeanCollectionDataSource dataSource;
          Collection reportRows = initializeBeanCollection();
          dataSource = new JRBeanCollectionDataSource(reportRows);
          return dataSource;
          }

          JRDataSource dataSource = createReportDataSource();
          JasperRunManager.runReportToPdfStream(reportStream,
          servletOutputStream, new HashMap(), dataSource);



          六、XML數(shù)據(jù)成生報(bào)表(XML as Datasource)

          JRXmlDataSource xmlDataSource = new JRXmlDataSource(
          new BufferedInputStream(getServletConfig().getServletContext()
          .getResourceAsStream("/reports/AircraftData.xml")),
          "/AircraftData/aircraft");


          七、json數(shù)據(jù)源

          List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

                  Map
          <String, Object> row1 = new HashMap<String, Object>();
                  Map
          <String, Object> row2 = new HashMap<String, Object>();

                  Map
          <String, Object> row = new HashMap<String, Object>();
                  row.put(
          "field1""001");
                  row.put(
          "field2""張三");
                  row.put(
          "field3""中國(guó)上海");
                  row.put(
          "field4""field4");
                  row.put(
          "field5""field5");
                  list.add(row);
                  row 
          = new HashMap<String, Object>();
                  row.put(
          "field1""002");
                  row.put(
          "field2""李四");
                  row.put(
          "field3""中國(guó)杭州");
                  row.put(
          "field4""field4");
                  row.put(
          "field5""field5");
                  list.add(row);
                  row 
          = new HashMap<String, Object>();
                  row.put(
          "field1""003");
                  row.put(
          "field2""王五");
                  row.put(
          "field3""中國(guó)南昌");
                  row.put(
          "field4""field4");
                  row.put(
          "field5""field5");
                  list.add(row);

                  row2.put(
          "uAnswer", list);
                  row1.put(
          "qNaire", row2);

                  JSONObject jsonObject 
          = JSONObject.fromObject(row1);
                  String json 
          = jsonObject.toString();

                  Map
          <String, Object> jasperPara = new HashMap<String, Object>();
                  jasperPara.put(
          "TITLE""json數(shù)據(jù)報(bào)表演示樣例(20131012)");
                  InputStream is 
          = new ByteArrayInputStream(json.getBytes());
                  jasperPara.put(
          "JSON_INPUT_STREAM", is);
                  jasperPara.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.CHINA);
                  jasperPara.put(JRParameter.REPORT_LOCALE, Locale.CHINA);

           


          json數(shù)據(jù)
              {"qNaire"{
                    
          "uAnswer": [
                      
          {
                        
          "field1""001",    
                        
          "field2""張三",    
                        
          "field3""中國(guó)上海",    
                        
          "field4""field4",
                        
          "field5""field5",
                      }
          ,
                      
          {
                        
          "field1""002",
                        
          "field2""李四",
                        
          "field3""中國(guó)杭州",
                        
          "field4""field4",
                        
          "field5""field5",
                      }
          ,
                      
          {
                        
          "field1""003",
                        
          "field2""王五",
                        
          "field3""中國(guó)南昌",
                        
          "field4""field4",
                        
          "field5""field5",
                    }

                    ]
                  }
          }


          ireport配置截圖:
















          posted on 2013-10-15 16:07 lanjh 閱讀(621) 評(píng)論(0)  編輯  收藏 所屬分類: 報(bào)表

          主站蜘蛛池模板: 黎城县| 上蔡县| 铜梁县| 芷江| 惠来县| 西贡区| 渭南市| 维西| 九龙城区| 西乡县| 麻栗坡县| 高陵县| 安化县| 大庆市| 抚宁县| 宜州市| 江西省| 武山县| 浠水县| 张掖市| 缙云县| 四会市| 衢州市| 新龙县| 盐山县| 开封县| 施秉县| 瑞昌市| 新田县| 西昌市| 大英县| 宁南县| 墨玉县| 海原县| 积石山| 库尔勒市| 武清区| 阜康市| 田林县| 庐江县| 沧州市|