找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax

银牌会员

268

主题

668

帖子

2136

积分

银牌会员

积分
2136
Dtttax
银牌会员   /  发表于:2024-10-14 15:54  /   查看:619  /  回复:12
1金币
如果当前单元格编辑后,其他sheet的单元格引用了当前编辑的单元格,需要用什么方法找到所有关联的单元格。

12 个回复

正序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-11-1 13:34:01
13#
好的,那就删除settimeout即可。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-11-1 10:56:47
12#
问题找到了 settimeout里面不行
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-10-30 16:49:27
11#
您好,在官网Designer【17.1.8】上,导入您的json文件,执行下面的代码,
  1. let designer = GC.Spread.Sheets.Designer.findControl('gc-designer-container')
  2. let spread = designer.getWorkbook()
  3. let sheet = spread.getActiveSheet()
  4. spread.sheets.forEach(sheetObj=>{
  5.       sheetObj.bind(GC.Spread.Sheets.Events.RangeChanged,function(e,args){
  6.         let sheetName=args.sheetName
  7.         let sheet=args.sheet;
  8.         let changedCells=args.changedCells
  9.           console.log('changedCells',args)
  10.         if(changedCells){
  11.             changedCells.forEach(c=>{
  12.               let cell=sheet.getCell(c.row,c.col);
  13.               let cellTag=cell.tag()||{};
  14.         
  15.             })
  16.         }
  17.       })
  18.       })
复制代码



然后删除T3sheet ,触发了RangeChanged事件,如下图所示:
image.png490286559.png

如果您未能实现上面的用法,看一下是否是版本问题。升级版本试一下。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-10-30 13:53:08
10#
附件这个怎么都不进sheetObj.bind(GC.Spread.Sheets.Events.RangeChanged,function(e,args){

202410281751346017(2022).zip

17.99 KB, 下载次数: 19

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-10-29 09:59:17
9#
比如c表里面引用了B表,B表里面引用了A表 。
如果监听了RangeChanged事件,当A表删除时,可以获取到C表的changedCells以及B表的changedCells 。
image.png605879211.png
如上图所示,为A,B,C表分别设置标签 ,当A表删除时,可以监听到B表,C表那些值发生变化 ,以及对应单元格的Tag
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-10-28 18:12:31
8#
RangeChanged 事件 删除sheet的时候获取不到对应单元格了。
spread.sheets.forEach(sheetObj=>{
      sheetObj.bind(GC.Spread.Sheets.Events.RangeChanged,function(e,args){
        let sheetName=args.sheetName
        let sheet=args.sheet;
        let changedCells=args.changedCells
        if(changedCells){
            changedCells.forEach(c=>{
              let cell=sheet.getCell(c.row,c.col);
              let cellTag=cell.tag()||{};
        
            })
        }
      })
      })
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-10-16 15:50:41
6#
如果删除一个sheet,怎么在删除sheet事件找到对应的dirty cell. 比如c表里面引用了B表,B表里面引用了A表,如果删除A表事件里面dirtycell有对应C表的cell
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-10-15 08:44:56
5#
用dirty cell。 改了一个单元格以后,公式引用的相关单元格也会变dirty。
在valueChanged和rangeChangedl两个事件里获取,用完以后clear
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-10-14 17:25:41
4#
还有没有更好的方法,这样每个单元格找,如果一次黏贴很多单元格或者直接更新excel导入,这肯定会很卡。加上公式有很多层,一个单元格就有四五层。用这个功能是要求当前单元格的值变化后有个sheet里面的富文本也跟着变化。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-14 16:54:08
3#
您好!可以使用Worksheet:getDependents()获取该单元格的从属信息,跨表引用也支持通过该API检索。

可以参考官网教程和API文档了解详情:
教程--https://demo.grapecity.com.cn/sp ... et-dependent/purejs
Worksheet:getDependents()--https://demo.grapecity.com.cn/sp ... sheet#getdependents
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部