5.JasperReports学习笔记5-其它数据生成动态的报表(WEB)

转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html

一、空数据(Empty Datasources)
就是说JRXML文件里面的内容都是静态的,直接使用
JREmptyDataSource就行了
JasperRunManager.runReportToPdfStream(reportStream,  
servletOutputStream, new HashMap(), new JREmptyDataSource());

二、Map数组(Map Datasources)
有的时候数据不一定要从数据库里面来,还有可能从Map数组里面来成生Map[]的方法

private Map[] initializeMapArray()
{
//你可以把数组里面的每个map看成一个对象,就相于数据库里面的每个字段
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对象
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); 



四、对象数组(Java Objects as Datasources)对象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里面调用
JRDataSource dataSource = createReportDataSource();
JasperRunManager.runReportToPdfStream(reportStream,
servletOutputStream, new HashMap(), dataSource);



五、对象集合
和对象数组基本上一样,就是最后生成的是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数据成生报表(XML as Datasource)

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


七、json数据源

 1 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 2 
 3         Map<String, Object> row1 = new HashMap<String, Object>();
 4         Map<String, Object> row2 = new HashMap<String, Object>();
 5 
 6         Map<String, Object> row = new HashMap<String, Object>();
 7         row.put("field1", "001");
 8         row.put("field2", "张三");
 9         row.put("field3", "中国上海");
10         row.put("field4", "field4");
11         row.put("field5", "field5");
12         list.add(row);
13         row = new HashMap<String, Object>();
14         row.put("field1", "002");
15         row.put("field2", "李四");
16         row.put("field3", "中国杭州");
17         row.put("field4", "field4");
18         row.put("field5", "field5");
19         list.add(row);
20         row = new HashMap<String, Object>();
21         row.put("field1", "003");
22         row.put("field2", "王五");
23         row.put("field3", "中国南昌");
24         row.put("field4", "field4");
25         row.put("field5", "field5");
26         list.add(row);
27 
28         row2.put("uAnswer", list);
29         row1.put("qNaire", row2);
30 
31         JSONObject jsonObject = JSONObject.fromObject(row1);
32         String json = jsonObject.toString();
33 
34         Map<String, Object> jasperPara = new HashMap<String, Object>();
35         jasperPara.put("TITLE", "json数据报表演示样例(20131012)");
36         InputStream is = new ByteArrayInputStream(json.getBytes());
37         jasperPara.put("JSON_INPUT_STREAM", is);
38         jasperPara.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.CHINA);
39         jasperPara.put(JRParameter.REPORT_LOCALE, Locale.CHINA);

 

 

 


json数据

{"qNaire"{
          "uAnswer": [
            {
              "field1""001",    
              "field2""张三",    
              "field3""中国上海",    
              "field4""field4",
              "field5""field5",
            },
            {
              "field1""002",
              "field2""李四",
              "field3""中国杭州",
              "field4""field4",
              "field5""field5",
            },
            {
              "field1""003",
              "field2""王五",
              "field3""中国南昌",
              "field4""field4",
              "field5""field5",
          }
          ]
        }}


ireport配置截图:










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值