Winny 发表于 2022-6-2 23:17:37

【SpreadJS V15.1 新特性介绍】 支持 GetUsedRange 接口,按条件获取有效区域

本帖最后由 Winny 于 2022-6-2 23:29 编辑

不少同时使用SpreadJS和GCExcel的客户,都会问为什么GCExcel中提供了getUsedRange()方法,可以很方便的获取当前使用区域,从而获取相关数据。而SpreadJS却没有这个API,导致获取数据需要根据行列总数依次获取,但实际上,很多单元格都是空白单元格,写起来比较麻烦。SpreadJS也是积极响应客户需求,在15.1.0中新增了工作表(Worksheet)级别上的getUsedRange()方法。getUsedRange()方法接收一个参数,根据这个参数,可以获取不同元素的使用区域,详细的参数枚举列表如下:

上述类型中,SpreadJS在计算使用区域时,使用了两种策略,一种是直接计算,即在调用getUsedRange()时计算使用范围。另一种是修改计算,即在修改某类元素后,会计算好范围,调用API时不再执行计算过程,而是直接返回值。
对于图表、shape、图片等这种在SpreadJS提供实体集合类的元素,采用的是修改计算,因为这些元素内部会维护自己的使用范围,在调用getUsedRange()方法时,只需要将对应的区域进行合并返回。而对于数据、样式和公式这种,由于没有实例管理其范围,因此只能在调用API后再计算使用范围。

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

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

nutstore 发表于 2022-11-17 18:18:44

调用 sheet.getUsedRange 方法时,如果给出 UsedRangeType 获取不到任何 range,就会返回null,但是 spreadjs 的ts声明文件只说了这是一个 GC.Spread.Sheets.Range 并没有说结果可能是个null ,建议能够修改一下,因为这事儿今天排查出来一个bug :curse::curse::curse:

Clark.Pan 发表于 2022-11-18 15:09:34

好的,收到,我们这边会向产品进行反馈
页: [1]
查看完整版本: 【SpreadJS V15.1 新特性介绍】 支持 GetUsedRange 接口,按条件获取有效区域