找回密码
 立即注册

QQ登录

只需一步,快速开始

彭EL

注册会员

4

主题

8

帖子

28

积分

注册会员

积分
28
  • 92

    金币

  • 4

    主题

  • 8

    帖子

最新发帖
彭EL
注册会员   /  发表于:2024-8-30 11:27  /   查看:930  /  回复:10
1金币
SpreadJS 是否有获取单元格背景色的公式?

需求:我定义了若干列的若干条件格式,那么我想 以或的关系筛选出所有的 错误行,只通过筛选做不到,那么变通思路,在第一列增加条件格式,行中有 红色背景色的,那么当前单元格标记红色,然后再筛选第一列;

这样的话,如何通过公式 获取到 当前行的所有背景色呢 ?

最佳答案

查看完整内容

调研了下,没找到能获取单元格背景颜色的公式,只能通过Worksheet:getStyle()或者Worksheet:getActualStyle()或CellRange:backColor()获取单元格背景颜色。考虑设置背景颜色的性能影响,可以先统计错误行索引,之后对错误行首列单元格设置背景颜色,在设置背景颜色的代码前后分别加上Worksheet:suspendPaint()和Worksheet:resumePaint()用以控制绘制性能。

10 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-8-30 11:27:10
来自 8#
本帖最后由 Wilson.Zhang 于 2024-9-23 13:44 编辑
彭EL 发表于 2024-9-2 17:25
通过Worksheet:getStyle()或Worksheet:getActualStyle()获取Style再进一步获取背景颜色,可以自定义实现 ...

调研了下,没找到能获取单元格背景颜色的公式,只能通过Worksheet:getStyle()或者Worksheet:getActualStyle()或CellRange:backColor()获取单元格背景颜色。考虑设置背景颜色的性能影响,可以先统计错误行索引,之后对错误行首列单元格设置背景颜色,在设置背景颜色的代码前后分别加上Worksheet:suspendPaint()和Worksheet:resumePaint()用以控制绘制性能。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-30 13:31:11
2#
您好!根据您的需求描述,理解您的当前的方案是:为每列设置条件格式,每个单元格上的条件格式生效后对不符合条件规则的单元格着红色背景色;对每行的所有列检查其背景色是否为红色,如果存在红色背景色的单元格,则认为是包含了错误内容的行。确认下上述理解是否正确呢?如果有差异,需要您再详细介绍下。
回复 使用道具 举报
彭EL
注册会员   /  发表于:2024-8-30 18:31:26
3#
本帖最后由 彭EL 于 2024-8-30 18:33 编辑
Wilson.Zhang 发表于 2024-8-30 13:31
您好!根据您的需求描述,理解您的当前的方案是:为每列设置条件格式,每个单元格上的条件格式生效后对不符 ...

没错,是这样理解的;
补充说明,识别到每行是否存在错误时,同样会在第一列标记背景色,这样我可以通过第一列的筛选,达到查找所有 存在错误行的数据的目的
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-2 09:20:57
4#
彭EL 发表于 2024-8-30 18:31
没错,是这样理解的;
补充说明,识别到每行是否存在错误时,同样会在第一列标记背景色,这样我可以通过 ...

单元格的背景色作为样式Style的属性存在,在您的场景中由于条件格式对单元格值的判断结果使得每行各单元格的背景色可能不相同,需要单独访问每个单元格的背景色。如果您想一次性获取一行内所有单元格的背景颜色,可以基于单独访问每个单元格背景颜色的接口自定义实现,并且在其中根据行内单元格的颜色判定是否为错误行。您可以评估或尝试上述方案是否能够满足您的需要。
回复 使用道具 举报
彭EL
注册会员   /  发表于:2024-9-2 16:16:36
5#
Wilson.Zhang 发表于 2024-9-2 09:20
单元格的背景色作为样式Style的属性存在,在您的场景中由于条件格式对单元格值的判断结果使得每行各单元 ...

自定义实现,有可能也通过条件格式 做么 ? 因为每行的单元格颜色是设置了条件格式,会根据数据的情况自动判断并改变,所以 第一列也应该使用条件格式 实现;
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-2 17:19:55
6#
彭EL 发表于 2024-9-2 16:16
自定义实现,有可能也通过条件格式 做么 ? 因为每行的单元格颜色是设置了条件格式,会根据数据的情况自 ...

抱歉,可能我没有表达清楚,重新给您细化下:通过Worksheet:getStyle()或Worksheet:getActualStyle()获取Style再进一步获取背景颜色,可以自定义实现为对一个行内单元格的批量操作。
关于您提到的,本就可以针对一个区域设置条件格式,该区域内每个单元格都将被该条件格式的规则检查值并根据检查结果设置样式,没有获取单元格背景颜色的公式。
回复 使用道具 举报
彭EL
注册会员   /  发表于:2024-9-2 17:25:00
7#
Wilson.Zhang 发表于 2024-9-2 17:19
抱歉,可能我没有表达清楚,重新给您细化下:通过Worksheet:getStyle()或Worksheet:getActualStyle()获取 ...

通过Worksheet:getStyle()或Worksheet:getActualStyle()获取Style再进一步获取背景颜色,可以自定义实现为对一个行内单元格的批量操作。

——————————————————————
这个可以使用条件格式做么 ?还是得需要 我循环行,循环每个单元格 获取实现呢 ? 因为数据量比较大,循环处理的话,性能达不到要求,并且还得为每个单元格加 监控事件
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-23 13:43:09
9#
您好!由于您较长时间没有回帖,且从跟贴信息中了解到已得到有效解答,因此就结帖了。如有问题,欢迎继续发帖沟通。
回复 使用道具 举报
香香
注册会员   /  发表于:2024-9-23 17:57:16
10#
可以自定义函数,获得cell的背景色,然后在condition format中使用自定义的函数。自定义函数可以参考:https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/calculation/custom-functions/purejs
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部