找回密码
 立即注册

QQ登录

只需一步,快速开始

pactera

金牌服务用户

5

主题

15

帖子

52

积分

金牌服务用户

积分
52
最新发帖
pactera
金牌服务用户   /  发表于:2021-4-15 15:04  /   查看:1913  /  回复:5
本帖最后由 pactera 于 2021-4-15 16:01 编辑

如何将公式引用样式在R1C1和A1之间转换。不是设置referenceStyle实现的转换。就是有一个公式字符串通过API或者什么方式直接转换。例:将公式字符串【SUM(A1,A2)】转换【SUM(RC-2,RC-1)】



5 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-15 15:22:57
沙发
您好,目前不支持您描述的操作,目前仅支持将相对引用变为绝对引用
https://gcdn.grapecity.com.cn/showtopic-77800-1-10.html
回复 使用道具 举报
pactera
金牌服务用户   /  发表于:2021-4-15 15:32:36
板凳
DerrickJiao 发表于 2021-4-15 15:22
您好,目前不支持您描述的操作,目前仅支持将相对引用变为绝对引用
https://gcdn.grapecity.com.cn/showto ...

我查找API的时候发现了CalcEngine的formulaToExpression和expressionToFormula。
首先把公式转为表达式对象后再用expressionToFormula时将useR1C1设置为true是不是就可以得到R1C1的格式的公式?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-15 15:50:00
地板
pactera 发表于 2021-4-15 15:32
我查找API的时候发现了CalcEngine的formulaToExpression和expressionToFormula。
首先把公式转为表达式 ...

您可以用这两句代码var expr = GC.Spread.Sheets.CalcEngine.formulaToExpression(sheet,'=SUM(A1,A2)')

GC.Spread.Sheets.CalcEngine.expressionToFormula(sheet,expr,3,3,true)

但是对于RC模式,是需要有baseRow, baseColumn的。换句话说。这个是相对引用。在不同的Cell上应用的RC表示的引用是不同的。像这种A1,A2,就已经是确定的绝对引用了。所以转换出来的,只可能是SUM(RC,R[1]C),而不可能是=SUM(RC-2,RC-1)

回复 使用道具 举报
pactera
金牌服务用户   /  发表于:2021-4-15 16:01:25
5#
DerrickJiao 发表于 2021-4-15 15:50
您可以用这两句代码var expr = GC.Spread.Sheets.CalcEngine.formulaToExpression(sheet,'=SUM(A1,A2)')
...

好的,和我预期的差不多,我也写了示例,目前来看是可以的,谢谢。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-15 16:19:58
6#
pactera 发表于 2021-4-15 16:01
好的,和我预期的差不多,我也写了示例,目前来看是可以的,谢谢。

不用客气,解决了就好,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部