找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

130

主题

246

帖子

1528

积分

超级版主

Rank: 8Rank: 8

积分
1528
Winny
超级版主   /  发表于:2022-6-2 23:17  /   查看:1591  /  回复:2
本帖最后由 Winny 于 2022-6-2 23:29 编辑

不少同时使用SpreadJS和GCExcel的客户,都会问为什么GCExcel中提供了getUsedRange()方法,可以很方便的获取当前使用区域,从而获取相关数据。而SpreadJS却没有这个API,导致获取数据需要根据行列总数依次获取,但实际上,很多单元格都是空白单元格,写起来比较麻烦。SpreadJS也是积极响应客户需求,在15.1.0中新增了工作表(Worksheet)级别上的getUsedRange()方法。getUsedRange()方法接收一个参数,根据这个参数,可以获取不同元素的使用区域,详细的参数枚举列表如下:
image.png341188353.png
上述类型中,SpreadJS在计算使用区域时,使用了两种策略,一种是直接计算,即在调用getUsedRange()时计算使用范围。另一种是修改计算,即在修改某类元素后,会计算好范围,调用API时不再执行计算过程,而是直接返回值。
对于图表、shape、图片等这种在SpreadJS提供实体集合类的元素,采用的是修改计算,因为这些元素内部会维护自己的使用范围,在调用getUsedRange()方法时,只需要将对应的区域进行合并返回。而对于数据、样式和公式这种,由于没有实例管理其范围,因此只能在调用API后再计算使用范围。

getUesdRange()方法调用简单,以获取数据使用区域为例,一个完整的代码使用为:
  1. sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.data)
复制代码


详细的demo参考:getUsedRange()测试

2 个回复

倒序浏览
nutstore
金牌服务用户   /  发表于:2022-11-17 18:18:44
沙发
调用 sheet.getUsedRange 方法时,如果给出 UsedRangeType 获取不到任何 range,就会返回null,但是 spreadjs 的ts声明文件只说了这是一个 GC.Spread.Sheets.Range 并没有说结果可能是个null ,建议能够修改一下,因为这事儿今天排查出来一个bug
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-18 15:09:34
板凳
好的,收到,我们这边会向产品进行反馈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部