javabean ireport 做交叉报表

报表开发工具:ireport

程序开发工具:my eclipse

1.首先我们得到实体类,在my eclipse中逆向生成即可。

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

 

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

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

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

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

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

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

运行的结果如下所示:

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

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

package com.yaxing.action;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.yaxing.entity.DetailScoreView;
import com.yaxing.entity.DetailScoreViewId;
import com.yaxing.service.DetailScoreViewService;

public class DetailScoreViewAction extends ActionSupport{
 private DetailScoreViewService detailScoreViewService;
 private List<DetailScoreViewId> listDetailScoreViewId;
 public void setDetailScoreViewService(DetailScoreViewService detailScoreViewService) {
  this.detailScoreViewService = detailScoreViewService;
 }
 public DetailScoreViewService getDetailScoreViewService() {
  return detailScoreViewService;
 }
 public void setListDetailScoreViewId(List<DetailScoreViewId> listDetailScoreViewId) {
  this.listDetailScoreViewId = listDetailScoreViewId;
 }
 public List<DetailScoreViewId> getListDetailScoreViewId() {
  return listDetailScoreViewId;
 }
 public String execute()throws Exception{
  return super.execute();
 }
 public String listScoreView()throws Exception{
  try {
   Map session=ActionContext.getContext().getSession();
   String userId=session.get("userId").toString();
   List<DetailScoreView> allVaule=this.detailScoreViewService.listScoreBy(Long.parseLong(userId));
   listDetailScoreViewId=new ArrayList<DetailScoreViewId>();
   Iterator iterator=allVaule.iterator();
   while(iterator.hasNext()){
    Object[] all=(Object[]) iterator.next();
    DetailScoreViewId detailScoreViewId=new DetailScoreViewId();
    detailScoreViewId.setUnitName((String) all[0]);
    detailScoreViewId.setScore((Integer) all[1]);
    detailScoreViewId.setTeamName((String) all[2]);
    detailScoreViewId.setItemName((String) all[3]);
    
    listDetailScoreViewId.add(detailScoreViewId);
    
   }
   
  } catch (Exception e) {
   // TODO: handle exception
   return INPUT;
  }
  return SUCCESS;
 }

}


 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值