找回密码
 立即注册

QQ登录

只需一步,快速开始

dexteryao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

123

主题

8927

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13536

讲师达人悬赏达人元老葡萄SpreadJS 认证SpreadJS 高级认证微信认证勋章

dexteryao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-5-6 10:09  /   查看:2177  /  回复:0
SpreadJS V14 Update1 中对数据透视表(PivotTable)提供了getRange接口,可以用于获取当前透视表在工作表(workSheet)中占据的区域。

image.png104172057.png

数据透视表分为页区域(page)和内容区域(content)两个部分,如果没有筛选字段则page字段返回值为空(null)。

通过获取透视表区域,我们可以判断单元格是否位于透视表中,也可以对获取的结果进行想要的操作,比如全选数据透视表内容。
image.png830538635.png
图中在右键菜单中加入了全选选项,点击后会自动选中透视表内容区域(content)。
image.png224236144.png

在在线表格编辑中的具体实现如下:
右键全选会在"ClickViewport && PivotTableSelected"的情况下显示,点击后先通过findPivotTable获取到pivotTable对象,再调用getRange获取到content区域,最后调用setSelection进行选择。

  1.     designerConfig.commandMap["pivotTableContextMenuSelectAll"]= {
  2.         text:"全选",
  3.         commandName: "pivotTableContextMenuSelectAll",
  4.         visibleContext: "ClickViewport && PivotTableSelected",
  5.         execute: async (context) => {
  6.             var spread = context.getWorkbook();
  7.             let sheet = spread.getActiveSheet();
  8.             var pivot = sheet.pivotTables.findPivotTable(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex())
  9.             if(pivot){
  10.                 var {page, content} = pivot.getRange();
  11.                 sheet.setSelection(content.row, content.col, content.rowCount, content.colCount);
  12.             }
  13.         }
  14.     }
  15.     designerConfig.contextMenu.push("pivotTableContextMenuSelectAll");
复制代码

关于getRange更多的使用场景,欢迎大家跟帖讨论。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部