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