本帖最后由 Clark.Pan 于 2023-2-28 17:45 编辑
在GcExcel V6的新特性中,有一个功能是在一片指定区域中获取其中被使用的区域。这个功能本身对开发代码中提供了很多的遍历。目前SpreadJS没有对应的接口,不过我们完全可以通过代码来实现一个这样的接口。
首先,Excel中的任何一片区域都是一个规则的矩形,从一个区域中找出使用的区域(UsedRange)可以简化为在一个大的矩形中根据条件找到一个小的矩形。但是由于内容位置的不规范,通过内容获取矩形区域是一个比较麻烦的事情,举个例子,下面这个图中,黑色部分是内容,获取的使用区域(usedRange)应该如红框所示
这个时候问题就变成了,我们要在外侧的黑框中根据黑色部分的信息获取红色边框的内容。
那么如果写算法来解决这个问题,我们先来分析一下,一个矩形只需要4个点就可以定位,也就是左上,右上,左下,右下4个点(A,B,C,D)。
这四个点的index对应整个红色区域的规则如下:
A,B点的横坐标 = 1点的横坐标
C,D点的横坐标 = 3点的横坐标
A,C点的纵坐标 = 2点的纵坐标
B,D点的纵坐标 = 4点的纵坐标
那么问题就变成了1,2,3,4这4个点。最简单直接的办法就是通过4个双重循环来解决。
先按行再按列顺序双重循环获取的第一个黑色位置就是1这个点
先按行再按列倒序双重循环获取的第一个黑色位置就是3这个点
先按列再按行顺序双重循环获取的第一个黑色位置就是2这个点
先按列再按行倒序双重循环获取的第一个黑色位置就是4这个点
按照上述方法就可以实现获取任意区域内的使用区域,详情代码见附件
如果感兴趣,也可以再次基础上扩展其他条件,比如按公式,按样式等进行区分。
|
|