找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang
超级版主   /  发表于:2024-9-27 18:36  /   查看:322  /  回复:0
本帖最后由 AlexZ 于 2024-10-9 14:10 编辑

SpreadJS条件格式中的条件规则将null、undefined当作0值处理,将空字符串""当作文本处理。如图1所示,为单元格区域B4 : D6设置条件规则为 > 50时单元格背景色设置为绿色,对区域内值为空字符串的单元格认定为 > 0;为单元格区域F4 : H6设置条件规则为==0时单元格背景色设置为粉色,对区域内值为null或undefined的单元格认定为0。

image.png392549437.png

图1. 条件规则

然而,在Excel中,似乎无法对单元格设置null、undefiend、空字符串"",而SpreadJS支持通过Worksheet:setValue()为单元格设值为null、undefined、空字符串"",这样可能会影响某些场景下的用户期望。那么,如何能将null、undefined、空字符串""不看作等于0的值,或任意数值呢?翻阅官网API文档,发现ConditionalFormats:addFormulaRule()设置的公式规则可以代替数值规则。具体地,为单元格设置公式规则判断单元格内容是否为数值,如果是再进一步判断是否符合条件规则。举个栗子,如图1所示B4 : D6单元格区域的条件规则为 > 50,可变换为公式规则:

  1. cfs.addFormulaRule('=IF(ISNUMBER(B4:D6), B4:D6>50, FALSE())', style, [new spreadNS.Range(3, 1, 3, 3)]);
复制代码

对B4 : D6、F4 : H6设置与原来的数值条件规则对等的公式条件规则,即可消除SpreadJS条件规则对null、undefind、空字符串""的原生判断带来的影响,如图2所示。

image.png621076049.png

图2. 公式规则

当数值条件规则因null、undefined、空字符串""等特殊值的影响而受限时,可以转道尝试用公式规则代替。附上demo,以供参考。

条件格式(Designer版本).html

16.25 KB, 下载次数: 13

0 个回复

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