亿信BI报表一键展开功能设置方法

319
3

tangmq 数据达人Lv4

发表于2019-7-17 17:32

楼主
报表有折叠式钻取,效果如下图,点击左边的加号,可以一层层的展开
截图201907171725494117.png
那么需求来了:如果要对数据导出,而且导出的时候,希望导出全部展开后,进行导出。即,一键展开所有节点,然后导出展开后的数据;

实现步骤:
步骤一:添加一个文本,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=true')
截图201907171729293464.png
步骤二:定义服务器计算前脚本,注意哈,不是客户端脚本,服务器端计算前脚本
截图201907171730484937.png
  1. //机构的维表元
  2. def jgCellName="A1";
  3. //机构维的级次
  4. def dimMaxLevel=2;
  5. //缩进距离
  6. def indent = 15;

  7. def jgRow = 0;
  8. def jgCol = 0;
  9. //设置浮动范围
  10. def setFloatRange(rc,left,top,right,bottom){
  11.    rc.setTop(top);
  12.    rc.setLeft(left);
  13.    rc.setRight(right);
  14.    rc.setBottom(bottom);               
  15. }

  16. //展开所有级次
  17. def  expandAll(jgCellName,dimMaxLevel,indent){
  18.         jgCell = rpt.getCell(jgCellName);
  19.         jgRow = jgCell.getRow();
  20.         jgCol = jgCell.getCol();
  21.         
  22.            //注意此脚本只适合机构表元在第一个分析区的情况
  23.         //浮动分析区的范围
  24.         fxqRect = rpt.getFxq(0).getRange();
  25. //添加行数
  26.         rpt.insertRow(jgRow+1,dimMaxLevel);
  27.   if (fxqRect.getBottom()==jgRow+1){
  28.            //需要调整分析范围
  29.     fxqRect.setBottom(fxqRect.getBottom()+dimMaxLevel);
  30.   }

  31.         for(r in 0..<dimMaxLevel){
  32.                 row = r +jgRow+1;
  33.                 for(c in 0..<rpt.getColCount()){
  34.                   precl = rpt.getCell(jgRow,c);
  35.                   cl = rpt.getCell(row,c);
  36.                   cl.copyAll(precl);
  37.                   cl.adjustCellExp(true,true,jgRow-1,r+1);

  38.                   if (precl.isDimCell()){
  39.                     cl.copyToDimCell(precl);
  40.                     //设置浮动范围
  41.                     rc = precl.getFloatRange();
  42.                     setFloatRange(cl.getFloatRange(),rc.getLeft(),row,rc.getRight(),dimMaxLevel+jgRow+1);
  43.                     cl.setProperty('indent',indent*(r+1)+'');
  44.                     cl.setProperty('url','');
  45.                     cl.setFloatSumLevel(r+1);
  46.                
  47.                     //把源行的浮动表元范围设置下
  48.                     if (r==0){
  49.                        precl.getFloatRange().setBottom(dimMaxLevel+jgRow+1);
  50.                        precl.setFloatSumLevel(0);
  51.                        precl.setProperty('url','');
  52.                     }
  53.                   }
  54.                 }
  55.         }
  56. }
  57. if ("true".equals(params.getValue("@expand"))){
  58.   expandAll(jgCellName,dimMaxLevel,indent);
  59.   params.setValue("@expand","");
  60. }
复制代码


最近看过此主题的会员

1505121235

小由菜

挨踢妹

小亿

serai

韦韬然

leiz

本主题由辰哥于2019-12-5 15:09添加图章 精华

3个回答

只看楼主

辰哥 管理员

发表于2019-12-5 15:08

只看该作者

取消 关注该作者的回复

沙发

感谢分享,替薏米们先谢为敬!

leiz 初学数据Lv2

发表于2020-1-7 11:23

只看该作者

取消 关注该作者的回复

板凳

[BI33一键展开收回方法]第一步:
添加一个文本作为一键展开的功能,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=true')
如果需要一键收回,还需要在添加一个文本,配置万能式钻取:javascript:_z('<#=srcrpt.id#>','drillpath=;hiddencalcparams=false;@expand=false')


第二步:
添加服务器计算前脚本[attach]20924[/attach]
配置以上内容即可实现一键展开。

PS:BI47和ABI一键展开方法通用,可参考楼主提供的方法,如需一键展开和收回也可参考该贴:http://bbs.esensoft.com/thread-133882-1-1.html

K-tim 数据达人Lv4

发表于2020-1-10 14:48

只看该作者

取消 关注该作者的回复

地板

登录后可回答问题,请登录注册

回帖消息提醒
快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

渠道咨询电话:137-0120-6790

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

进群交流、一对一指导

©2020ESENSOFT北京亿信华辰软件有限责任公司版权所有:京ICP备07017321号京公网安备11010802016281号