我做的报表

这几天晚上整理报表工具,做了一次测试,这是一个例子,大家看看怎么样,能更简化吗?功能还欠缺什么?

 

这是数据项左侧显示

 

 

这是数据项上方显示

 

相关程序

  private void testBuild() throws Exception {
    Result srcResult = buildTestSrcResult(5); // 随机生成原始数据(5行)
    srcResult.setValue(0,4,null);//增加一个空值,检验空值的影响
    debug(srcResult);//显示原始数据集

    ReportManager manager = new ReportManager();//报表生成类
    manager.setTdDefaultValue("width","66");//设置表格默认宽度,也可以用setDefaultValue实现
    manager.setDefaultValue(AttrItem.TABLE,"id","22222"); //设置表格的默认属性
    manager.setIsLineColor2(true);//设置隔行显示
    AttrItem item;
    manager.setTablePropertyValue("id","111"); //定义表格的id,这里是

    manager.setDefaultValue(AttrItem.TEXT,AttrItem.NULL_VALUE,"---");//默认空值显示字符串
    manager.setTdDefaultValue("nowrap","true");//设置表格默认属性

    item = manager.addGroupItem(ReportManager.LEFT,0,0);//左边按第0列分组,同时按第0列排序
    item.setTdPropertyValue("width",61);//本类数据的宽度
    item.setTdPropertyValue("bgcolor","#8800FF");//本类数据的背景色
    item.getHeadAttrItem().getDataProperty().setValue("地区");//设置标题
    item.getHeadAttrItem().setTdPropertyValue("bgcolor","#CC3366");//设置标题的背景

    item= manager.addHeadStatItem(ReportManager.LEFT,ReportManager.BEGIN_STAT,0,0,StatItem.STAT_TYPE_SUM,"合计");//增加合计,在开始位置
    item.getHeadAttrItem().getTdProperty().setPropertyValue("align","center");//设置格式
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#FF88FF");//设置背景

    item = manager.addGroupItem(ReportManager.LEFT,1,1);//左边按第1列分组,同时按第1列排序
    item.getTdProperty().setPropertyValue("bgcolor","#8800FF");
    item.getHeadAttrItem().getDataProperty().setValue("员工");
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#009900");

    //上边按第1列分组,同时按第1列排序----在第1层
    item = manager.addGroupItem(ReportManager.UP,2,2);
    item.getHeadAttrItem().getDataProperty().setValue("类别");
    item.getTdProperty().setPropertyValue("width",42);
    item.getTdProperty().setPropertyValue("bgcolor","#0088FF");
    item = manager.addGroupItem(ReportManager.UP,3,3);
    item.getHeadAttrItem().getDataProperty().setValue("月份");
   
    //上边在第1层的第一个统计项
    item = manager.addHeadStatItem(ReportManager.UP,ReportManager.END_STAT,0,0,StatItem.STAT_TYPE_SUM,"小计");
    item.getTdProperty().setPropertyValue("bgcolor","#ff5555");
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#0000FF");//蓝色

    //上边在第1层的第2个统计项
    item = manager.addHeadStatItem(ReportManager.UP,ReportManager.END_STAT,0,1,StatItem.STAT_TYPE_SUM,"合计");
    item.getTdProperty().setPropertyValue("width",92);
    item.getTdProperty().setPropertyValue("bgcolor","#ff5555");
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#ccccFF");
    manager.addHeadStatItem(ReportManager.LEFT,ReportManager.BEGIN_STAT,1,0,StatItem.STAT_TYPE_SUM,"HJ");

    //上边在第1层的第3个统计项
    item = manager.addHeadStatItem(ReportManager.UP,ReportManager.END_STAT,0,1,StatItem.STAT_TYPE_FORMULA,"合计公式");
    item.setFormula(new com.webrate.data.formula.RecordAdd2(0,-1,new Integer(1)));
    item.setDataPropertyValue(AttrItem.NULL_VALUE,"--");
    item.getDataProperty().setDoubleMaxScale(2);
    item.getTdProperty().setPropertyValue("bgcolor","#ff5555");
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#33ccFF");
   
    //上边在第1层的第4、5个统计项,支持重复列
    item = manager.addHeadStatItem(ReportManager.UP,ReportManager.END_STAT,0,0,StatItem.STAT_TYPE_SUM,"XJ");
    item = manager.addHeadStatItem(ReportManager.UP,ReportManager.END_STAT,0,0,StatItem.STAT_TYPE_SUM,"XJ");

    // 定义第1个数据项
    item = manager.addDataItem(4,"数量");
    item.getTdProperty().setPropertyValue("width",51);
    item.getTdProperty().setPropertyValue("bgcolor","#ff8888");
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#4444FF");
    item.getDataProperty().setDoubleScale(1);
    // 定义第2个数据项
    item = manager.addDataItem(5,"金额");
    item.getDataProperty().setDisplayTag(AttrItem.INPUT_TEXT);// 标题同样可以使用其它类型
    item.getDataProperty().setName("je");//变量名,生成后根据行和列得到类似je_1_2的名字
    item.getDataProperty().setDoubleScale(2);//小数位数
    item.getTdProperty().setPropertyValue("width",52);
    item.getDataProperty().setPropertyValue("size",12);//数据的属性size=12
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#44FFCC");

    item = manager.addDataItem(-1,"公式");
    item.setFormula(new com.webrate.data.formula.RecordMul2(0,-2,-1));//左边两个数相乘
    item.getHeadAttrItem().getTdProperty().setPropertyValue("bgcolor","#4444FF");

    manager.addInitNode(ReportManager.LEFT,0,"上海1");//在左边第0层强行增加一个分类项(没有数据也显示)
    manager.addInitNode(ReportManager.LEFT,0,"上海");//在左边第0层强行增加一个分类项(没有数据也显示)
    //manager.setIsLeftData(true);//数据项在左侧
   
    manager.buildNewResult(srcResult);//对结果集进行处理
    manager.spanNewResult();//对表格区域的表格进行合并(规则略)
    debug(manager);//输出
  }

    这个工具还能支持分页显示,也能生成更复杂的表格,这里主要是展现不同区域可以设置不同的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值