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

QQ登录

只需一步,快速开始

空中单位
初级会员   /  发表于:2025-1-15 15:00  /   查看:99  /  回复:4
1金币
如图,加入下面代码后导入这份sjs文件即可触发 image.png951297607.png
  1. if (fileType === 'sjs') {
  2.         spread.open(file, function() {
  3.             console.log(1111)
  4.             const sheet=spread.getSheetFromName('销项 - 202412未开票收入')
  5.             try{
  6.                 sheet.getPrecedents(28, 16)
  7.             }catch(e){
  8.                 console.log(e)
  9.             }
  10.         }, function() { }, options);
  11.     } else {
  12.         spread.import(file, function() { }, function() { }, options);
  13.     }
复制代码


test.rar

270.82 KB, 下载次数: 2

最佳答案

查看完整内容

您好!在SpreadJS 17.1.10版本导入您提供的sjs文件,发现sheet“销项-202412未开票收入”的单元格Q29(即行索引18列索引16)中的公式“=ROUND(销项_系统开票明细[@税额]/销项_系统开票明细[@金额],2)”为列公式,引用了位于sheet“销项-系统开票明细”中名为“销项-系统开票明细”的Table中的“税额”和“金额”列,如下图所示: 再看Table“销项-系统开票明细”的范围为A9:R15,如下图所示: 那么,列公式“=ROUND(销项 ...

4 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2025-1-15 15:00:11
来自 2#
您好!在SpreadJS 17.1.10版本导入您提供的sjs文件,发现sheet“销项-202412未开票收入”的单元格Q29(即行索引18列索引16)中的公式“=ROUND(销项_系统开票明细[@税额]/销项_系统开票明细[@金额],2)”为列公式,引用了位于sheet“销项-系统开票明细”中名为“销项-系统开票明细”的Table中的“税额”和“金额”列,如下图所示:
列公式.png501042174.png

再看Table“销项-系统开票明细”的范围为A9:R15,如下图所示:
Table范围.png798332214.png

那么,列公式“=ROUND(销项_系统开票明细[@税额]/销项_系统开票明细[@金额],2)”在Q29需要引用的是Table“销项-系统开票明细”中“税额”和“金额”属性列在行29处的单元格数据,即H29和G29,如下图所示:
引用数据.png377050475.png

而H29和G29均为被包含在Table“销项-系统开票明细”现有范围中,所以此时sheet“销项-202412未开票收入”中Q29:R34的公式计算结果出错,显示为“#VALUE”,如下图所示:
公式计算结果错误.png95440672.png

错误的公式自然无法获取到其引用信息,我们对Table“销项-系统开票明细”扩展范围令其包含H29和G29,并对H29和G29设置有效数据,如下图所示:
扩展Table区域.png359497069.png

此时,sheet“销项-202412未开票收入”的Q29单元格中公式引用了有效数据,计算得到正确结果,通过Worksheet:getPrecedents()自然可以获取到正确的公式引用信息,如下图所示:
正确引用.png925647277.png

建议您重新设计表格结构,令列公式引用关系正确,即可正常获取公式的引用信息。

回复 使用道具 举报
空中单位
初级会员   /  发表于:2025-1-15 16:31:58
3#
Wilson.Zhang 发表于 2025-1-15 16:08
您好!在SpreadJS 17.1.10版本导入您提供的sjs文件,发现sheet“销项-202412未开票收入”的单元格Q29(即行 ...

好的,谢谢,这边业务逻辑是导出部分表时部分公式会失去引用。这边程序原来是用getPrecedents的返回值来找当前单元格引用的表名里是否包含未导出的表,如果有就删掉公式,但调用了一下直接停住了,我去换个方法,可以结贴了
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-1-16 08:42:11
4#
空中单位 发表于 2025-1-15 16:31
好的,谢谢,这边业务逻辑是导出部分表时部分公式会失去引用。这边程序原来是用getPrecedents的返回值来 ...

可以使用CalcEngine:formulaToRanges()解析公式中的单元格引用信息,包括被引用单元格所在sheet名称,如下图所示:
公式引用sheet名称.png959575805.png


可以参考如下官网产品文档了解详情:
https://demo.grapecity.com.cn/spreadjs/help/docs/formulareference/formulaoverview/cellreferences/use-cell-references#%E5%B0%86%E5%85%AC%E5%BC%8F%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8C%BA%E5%9F%9F
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-1-22 12:05:29
5#
您好!由于您较长时间未回复,且从跟帖回复中了解到问题已得到有效解答,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部