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

QQ登录

只需一步,快速开始

小仙

注册会员

12

主题

21

帖子

75

积分

注册会员

积分
75
小仙
注册会员   /  发表于:2025-3-27 09:11  /   查看:105  /  回复:2
10金币
现在有一个需求,我新建了一个模板文件,spread,里面设置了多个公式,但单元格的公式是形如ASUM("A1","yyyy,mm,xxxx"),其中ASUM是我定义好的异步函数,

A1是常量不需要管,yyyy是年,mm是月份,xxxx是code,异步函数需要把年月code都传到后端请求数据回来
  1. class StatementF extends GC.Spread.CalcEngine.Functions.AsyncFunction {
  2.   cellRequestMap: Map<string, CellRequest>;

  3.   constructor(name: string) {
  4.     super(name, 1, 255);
  5.     this.cellRequestMap = new Map<string, CellRequest>();
  6.   }

  7.   defaultValue(): any {
  8.     return "Loading";
  9.   }

  10.   evaluateAsync(context: GC.Spread.CalcEngine.AsyncEvaluateContext): any {
  11.     const args = arguments;
  12.     console.log(args)
  13.     const p = arguments[0]
  14.     if (args.length != 3) {
  15.       context.setAsyncResult("参数异常");
  16.       return;
  17.     }
  18.     // 将请求参数收集到全局数组中
  19.     this.cellRequestMap.set(p.row + '-' + p.col, {
  20.       formula: args[1],
  21.       argStr: args[2],
  22.       context: context
  23.     });

  24.     // 设置默认值,默认值是文本类型,和其他的一起的时候会报#NAME?
  25.     context.setAsyncResult("Loading...");
  26.   }
  27. }
复制代码


然后我们想要做一个生成功能,基于上面的模板文件
生成过程理想情况:点击生成按钮,把模板文件加载,然后把表格中的单元格设置了公式并且公式的格式符合上面内容的,都替换成ASUM("A1","2025,3,1001"),

这能实现吗,能暴力遍历工作簿吗,还是有更好的api支持

最佳答案

查看完整内容

您好, 遍历循环是一个可行的方法,您可以先获取getUsedRange,并在参数中传入formula来拿到一个区域,并且对其进行遍历。 您也可以使用search方法,但其耗费的时间不一定比直接遍历usedRange有优势,因为search每次只能返回范围内的一个搜索结果,要获取全部结果仍然需要遍历,并根据每次的搜索结果动态修改searchCondition的rowStart和columnStart参数。

2 个回复

倒序浏览
最佳答案
最佳答案
Matthew.Xue
超级版主   /  发表于:2025-3-27 09:11:40
来自 2#
本帖最后由 Matthew.Xue 于 2025-3-27 14:01 编辑

您好, 遍历循环是一个可行的方法,您可以先获取getUsedRange,并在参数中传入formula来拿到一个区域,并且对其进行遍历。
  1. sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.formula);
复制代码
您也可以使用search方法,但其耗费的时间不一定比直接遍历usedRange有优势,因为search每次只能返回范围内的一个搜索结果,要获取全部结果仍然需要遍历,并根据每次的搜索结果动态修改searchCondition的rowStart和columnStart参数。
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-3-31 10:12:31
3#
您好,您提出的问题应该已经解释清楚了,这边就先结贴了,有问题可以发新帖~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部