请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

大Vi

高级会员

199

主题

439

帖子

1408

积分

高级会员

积分
1408
大Vi
高级会员   /  发表于:2025-4-30 17:10  /   查看:94  /  回复:5
1金币
sheet.setValue(row, col, names)
为什么setValue设置值有时候会触发ValueChanged事件,有时候又不会?如果我通过代码设置值,如何用代码触发ValueChanged的事件呢?

最佳答案

查看完整内容

单元格一经修改值便变为脏单元格,通过Worksheet:setValue()或UI操作对单元格填充数据均可使得单元格变为脏单元格,Worksheet:getDirtyCells()即可获取sheet中的所有脏单元格。 可以参考官网教程了解脏数据和脏单元格概念: 脏数据

5 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2025-4-30 17:10:24
来自 4#
大Vi 发表于 2025-5-6 09:04
那是否有哪个事件能监听到单元格任何形式的值变化的吗?包括ui输入和代码setValue这种形式的赋值

单元格一经修改值便变为脏单元格,通过Worksheet:setValue()或UI操作对单元格填充数据均可使得单元格变为脏单元格,Worksheet:getDirtyCells()即可获取sheet中的所有脏单元格。

可以参考官网教程了解脏数据和脏单元格概念:
脏数据
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-4-30 17:30:25
2#
本帖最后由 Wilson.Zhang 于 2025-5-6 17:34 编辑

您好!在UI操作对单元格输入了数据并退出单元格可触发ValueChanged事件。监听ValueChanged事件可以了解哪个单元格的数据发生了变化,从而辅助业务逻辑执行。如果您通过代码对指定单元格填充了数据,那么可以在Worksheet:setValue()之后紧跟上相关的业务处理代码,相当于您已知某单元格数据变化,提前做好了预控操作。
回复 使用道具 举报
大Vi
高级会员   /  发表于:2025-5-6 09:04:20
3#
Wilson.Zhang 发表于 2025-4-30 17:30
您好!在UI操作对单元格输入了数据并退出单元格可触发ValueChanged事件。监听ValueChanegd事件可以了解哪个 ...

那是否有哪个事件能监听到单元格任何形式的值变化的吗?包括ui输入和代码setValue这种形式的赋值
回复 使用道具 举报
大Vi
高级会员   /  发表于:2025-5-7 11:21:18
5#
Wilson.Zhang 发表于 2025-5-6 13:40
单元格一经修改值便变为脏单元格,通过Worksheet:setValue()或UI操作对单元格填充数据均可使得单元格变为 ...

脏数据我有个疑问,如果一个值被改了,然后又改回去了,也算作脏数据吗?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-5-7 11:38:13
6#
大Vi 发表于 2025-5-7 11:21
脏数据我有个疑问,如果一个值被改了,然后又改回去了,也算作脏数据吗?

如下图所示,单元格值变更导致其成为脏数据:
1746588822275.jpg756488036.png

Worksheet:getDirtyCells()获取到脏单元格中包含单元格位置和单元格修改前后的数据,如下图所示:
1746588893958.png127314757.png

即时,修改后又将值修改为原始值,也认为该单元格是脏单元格,如下动图所示:
脏数据.gif

此外,Worksheet:clearPendingChanges()能够清除指定脏单元格的脏状态。您可以通过该方法清除sheet中所有单元格的脏状态。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部