找回密码
 立即注册

QQ登录

只需一步,快速开始

湖南大商帮

初级会员

48

主题

162

帖子

486

积分

初级会员

积分
486
湖南大商帮
初级会员   /  发表于:2023-1-4 11:39  /   查看:1641  /  回复:3
我项目一个sheet大约有5000行,300列左右,我们有需求就是当某列的值分别是红,绿,蓝,灰,等情况下,这一行字体颜色或背景色要变成对应的颜色值。

类似下图的“合计1”字段效果

image.png156741637.png

现在有2个问题,一个是为了减少代码量,我把应用范围设置为全部行列
  1. style_red.foreColor = "red";style_blue.foreColor = "red";
  2. var ranges = [new GC.Spread.Sheets.Range(-1,-1,-1,-1)];
复制代码
这样哪怕是新增行,也会自动继承条件格式的样式,无需编码控制。
问题1,在大量数据(几千行几百列的情况下,挂起绘制)下,会导致界面卡顿,尤其是新增行操作,要600-800毫秒,比较卡。
问题2,我很困惑的是,比如上面的方式range是全部行列-1,-1,-1,-1,为何我改变其中的某一行的某列的值,这一行的文字都会自动变色,而不是全部的行列的文字,虽然效果确实是我要的样子,但是不明白为何刚好是这样。
问题3,addFormulaRule一定得指定列的坐标$d1这样的值,实际我们的列是动态的位置(用户可以手工排序),所以这个坐标不好写死,如果换成addCellValueRule方法,那么这个列名要怎么写呢

image.png162270506.png

3 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-4 18:37:32
沙发
第一个问题,需要您提供对应的ssjson我们看一下您具体的设置,从而看看有没有可以优化的地方。目前猜测就是因为条件格式多导致了前端的性能瓶颈。
第二个问题,range其实就是该条件格式作用的范围。
第三个问题d前不加$试试,这样公式会变成相对引用,会在行列位置发生变化的时候进行相对偏移
回复 使用道具 举报
湖南大商帮
初级会员   /  发表于:2023-1-7 12:44:11
板凳
第一个问题确实是条件格式太多引起的,似乎没有太好的办法优化了;
第二个问题没啥问题;
第三个问题,如果改成相对引用,条件格式只会作用在这一个单元格上,只有$F1这样的绝对列相对行的坐标系,才会作用于整行,这个已经确认了,然后还有一个问题,我已发帖,有时间麻烦看看
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-9 15:48:58
地板
那确实没什么太好的办法了,试了一下Excel也是同样逻辑。可以考虑在您列动态排序之后删除之前的条件格式,然后根据新的列坐标重新添加。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部