javabean ireport 做交叉报表
如下图所示:点击 设置 新建-javabean
![](https://img-my.csdn.net/uploads/201207/15/1342322599_8500.jpg)
![](https://img-my.csdn.net/uploads/201207/15/1342322696_3010.jpg)
2.选择javabean Datesource的数据源,选择正确的路径,此路径为你实体类的路径,点击read attributes,会列出该实体类中的字段。点击选择即可。
![](https://img-my.csdn.net/uploads/201207/15/1342322761_6329.jpg)
这是选择的字段会出现在field中。
3.选择crosstab到报表的summary中,只能放到summary中,这里用javabean做数据源和在数据库中查询得到字段是不一样的。在数据库中查询,crosstab可以放到报表中的任何位置的。
![](https://img-my.csdn.net/uploads/201207/15/1342322884_9791.jpg)
然后会弹出要选择的项,根据你的需要选择相对应的横列和纵列即可。。
4.如下所示:(注意:javabean做交叉报表只能放到summary中,放在别的地方是显示错误。)
![](https://img-my.csdn.net/uploads/201207/15/1342323056_5350.jpg)
5.报表做好后,点击编译,这是会在你报表存放的目标位置生成一个.jasper的文件,将此文件拷到my eclipse中,然后写相应的类操作。
运行的结果如下所示:
![](https://img-my.csdn.net/uploads/201207/15/1342323160_2409.jpg)
实现该报表所对应的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) {
-
- return INPUT;
- }
- return SUCCESS;
- }
-
- }