javabean ireport 做交叉报表

来源:互联网 发布:网络切换软件 编辑:程序博客网 时间:2024/06/12 01:08

报表开发工具: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; }}