Jasper+ireport动态报表学习(四)javabean ireport 做交叉报表

javabean ireport 做交叉报表


如下图所示:点击  设置 新建-javabean

 

2.选择javabean Datesource的数据源,选择正确的路径,此路径为你实体类的路径,点击read attributes,会列出该实体类中的字段。点击选择即可。

这是选择的字段会出现在field中。

3.选择crosstab到报表的summary中,只能放到summary中,这里用javabean做数据源和在数据库中查询得到字段是不一样的。在数据库中查询,crosstab可以放到报表中的任何位置的。

然后会弹出要选择的项,根据你的需要选择相对应的横列和纵列即可。。

4.如下所示:(注意:javabean做交叉报表只能放到summary中,放在别的地方是显示错误。)

5.报表做好后,点击编译,这是会在你报表存放的目标位置生成一个.jasper的文件,将此文件拷到my eclipse中,然后写相应的类操作。

运行的结果如下所示:

实现该报表所对应的action类:

该类列出了所有数据库中的信息:

[java]  view plain  copy
 print ?
  1. package com.yaxing.action;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Iterator;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import com.opensymphony.xwork2.ActionContext;  
  9. import com.opensymphony.xwork2.ActionSupport;  
  10. import com.yaxing.entity.DetailScoreView;  
  11. import com.yaxing.entity.DetailScoreViewId;  
  12. import com.yaxing.service.DetailScoreViewService;  
  13.   
  14. public class DetailScoreViewAction extends ActionSupport{  
  15.  private DetailScoreViewService detailScoreViewService;  
  16.  private List<DetailScoreViewId> listDetailScoreViewId;  
  17.  public void setDetailScoreViewService(DetailScoreViewService detailScoreViewService) {  
  18.   this.detailScoreViewService = detailScoreViewService;  
  19.  }  
  20.  public DetailScoreViewService getDetailScoreViewService() {  
  21.   return detailScoreViewService;  
  22.  }  
  23.  public void setListDetailScoreViewId(List<DetailScoreViewId> listDetailScoreViewId) {  
  24.   this.listDetailScoreViewId = listDetailScoreViewId;  
  25.  }  
  26.  public List<DetailScoreViewId> getListDetailScoreViewId() {  
  27.   return listDetailScoreViewId;  
  28.  }  
  29.  public String execute()throws Exception{  
  30.   return super.execute();  
  31.  }  
  32.  public String listScoreView()throws Exception{  
  33.   try {  
  34.    Map session=ActionContext.getContext().getSession();  
  35.    String userId=session.get("userId").toString();  
  36.    List<DetailScoreView> allVaule=this.detailScoreViewService.listScoreBy(Long.parseLong(userId));  
  37.    listDetailScoreViewId=new ArrayList<DetailScoreViewId>();  
  38.    Iterator iterator=allVaule.iterator();  
  39.    while(iterator.hasNext()){  
  40.     Object[] all=(Object[]) iterator.next();  
  41.     DetailScoreViewId detailScoreViewId=new DetailScoreViewId();  
  42.     detailScoreViewId.setUnitName((String) all[0]);  
  43.     detailScoreViewId.setScore((Integer) all[1]);  
  44.     detailScoreViewId.setTeamName((String) all[2]);  
  45.     detailScoreViewId.setItemName((String) all[3]);  
  46.       
  47.     listDetailScoreViewId.add(detailScoreViewId);  
  48.       
  49.    }  
  50.      
  51.   } catch (Exception e) {  
  52.    // TODO: handle exception  
  53.    return INPUT;  
  54.   }  
  55.   return SUCCESS;  
  56.  }  
  57.   
  58. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值