找回密码
 立即注册

QQ登录

只需一步,快速开始

wutao@digiwin
金牌服务用户   /  发表于:2024-8-13 14:42  /   查看:1133  /  回复:24
1金币
本帖最后由 Wilson.Zhang 于 2024-8-28 15:56 编辑

产品:SpreadJS
版本:17.1.2
调研编号:SJS-25986
Last Review:2024-08-28
当前进展:非功能问题,与Excel保持一致。

image.png276503600.png 使用addCellValueRule进行单元格样式设置会将空值也进行转换,如果设置大于0,空值为“”会变色,如果设置等于0空值null或undefined会变色,如果大于等于0都会变色。所以当判断大于等于0的时候如何设置空值不会受影响。需要条件格式判断空值不受影响,除非判断等于“”或null,空值才会受样式影响

demo.zip

3.16 KB, 下载次数: 66

24 个回复

正序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-19 17:32:32
25#
您好!由于您较长时间未再回复,且已向您提供了有效解答和方案,那就结贴了。如有问题,欢迎继续发帖沟通。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-28 15:58:16
24#
您好!请问您的问题得到解决了吗?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-20 14:31:20
23#
本帖最后由 Wilson.Zhang 于 2024-8-20 14:37 编辑
wutao@digiwin 发表于 2024-8-20 14:02
您好,问题一您那边麻烦提供一下demo看看,谢谢

您的问题一是关于如何设置Table的行列索引,我在21楼向您解答了,不需要额外设置,Table附生在Worksheet上,通过Worksheet的行列索引即可定位。如果我理解有偏差,请您详述您的问题。如果问题与本贴问题不相同,建议您发一个新帖。
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2024-8-20 14:02:13
22#
Wilson.Zhang 发表于 2024-8-20 11:12
关于问题一:Table中单元格不用额外设置行列索引,Table附生在Worksheet上,通过Worksheet的行列索引即可 ...

您好,问题一您那边麻烦提供一下demo看看,谢谢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-20 11:12:19
21#
wutao@digiwin 发表于 2024-8-20 09:19
您好,我这边是用表格
1、是表格,我设置行列索引没有作用,我们代码是根据,请问需要如何设置吗?能否给 ...

关于问题一:Table中单元格不用额外设置行列索引,Table附生在Worksheet上,通过Worksheet的行列索引即可定位。
关于问题二:公式没有生效的原因不在于行列索引,而是公式设置不符合实际需求。根据您提供的代码,理解您想要设置的规则是B46区域内的单元格值大于50且小于80,那么AND函数在此处需要对每个单元格单独判断,如果对区域内所有单元格集体判断的话,AND函数的结果为FALSE,这样条件格式便不生效。因此,合适的设置方式是对每个单元格逐个设置公式规则,如下代码是对B4单元格设置公式规则,区域内其他单元格设置公式规则同理:
  1. cfs.addFormulaRule("=IF(ISNUMBER(B4), AND(B4>50, B4<80), FALSE())", style, [new GC.Spread.Sheets.Range(3, 1, 1, 1)]);
复制代码
您可以参考尝试该方案。
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2024-8-20 09:19:59
20#
本帖最后由 wutao@digiwin 于 2024-8-20 10:38 编辑
Wilson.Zhang 发表于 2024-8-20 08:49
您好!您图中的是Table吗?Table区域中的单元格也可以通过行列索引定位,因此设置条件格式的方式也遵循在 ...

您好,我这边是用表格
1、是表格,我设置行列索引没有作用,我们代码是根据
https://gcdn.grapecity.com.cn/showtopic-222289-1-1.html
这个链接里面的demo绘制spreadjs
,请问需要如何设置吗?能否给个代码?

2、 image.png47614439.png sheet.conditionalFormats.addFormulaRule("=IF(AND(ISNUMBER(B46), B46 > 50, B46 < 80), TRUE(), FALSE())", style, [new spreadNS.Range(r + 1, c, h - 1, w)]) 这样写大于50且小于80怎么没有生效
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-20 08:49:18
19#
wutao@digiwin 发表于 2024-8-19 19:23
上述代码是有单元格索引,如果是这种表格呢,没有单元格索引,怎么判断整个区域大于50的数

您好!您图中的是Table吗?Table区域中的单元格也可以通过行列索引定位,因此设置条件格式的方式也遵循在工作表中单元格区域的设置方式。
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2024-8-19 19:23:36
18#
Wilson.Zhang 发表于 2024-8-16 17:11
您可以参考如下代码:

image.png788513183.png 上述代码是有单元格索引,如果是这种表格呢,没有单元格索引,怎么判断整个区域大于50的数
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-16 17:11:38
17#
wutao@digiwin 发表于 2024-8-16 15:38
麻烦提供下demo看看

您可以参考如下代码:
  1. var cfs = sheet.conditionalFormats;
  2. cfs.addFormulaRule("=IF(ISNUMBER(B4:D6),B4:D6>50,FALSE())", style, [new spreadNS.Range(r + 1, c, h - 1, w)]);
复制代码


回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-16 17:11:21
16#
wutao@digiwin 发表于 2024-8-16 14:47
好的,我一开始用sheet.conditionalFormats.removeRuleByRange(i, index, 1, 1);这个方法对单元格空值移 ...

您试一下在循环流程前后分别加上暂停绘制和恢复绘制的代码,如下代码所示:

  1. //  暂停绘制
  2. sheet.suspendPaint();
  3. //  恢复绘制
  4. sheet.resumePaint();
复制代码


回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部