找回密码
 立即注册

QQ登录

只需一步,快速开始

一蓑烟雨

初级会员

14

主题

49

帖子

368

积分

初级会员

积分
368
一蓑烟雨
初级会员   /  发表于:2020-10-28 15:52  /   查看:4866  /  回复:16
如图,想设置 S列 = N列 * P列,但是找到的公式都是设置某一行的公式,难道要每行都循环吗?
8IB3C@MTDO6M$]}{(ZB$AIC.png

16 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-28 18:38:05
沙发
您可以使用数组公式来计算两列的相乘。 image.png274811705.png
推荐参考学习指南:https://demo.grapecity.com.cn/sp ... rray-formula/purejs
回复 使用道具 举报
一蓑烟雨
初级会员   /  发表于:2020-10-29 18:20:15
板凳
该方法会导致导出的表格标题内容改变,请问如何解决?
企业微信截图_16039666531830.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-30 09:56:12
地板
一蓑烟雨 发表于 2020-10-29 18:20
该方法会导致导出的表格标题内容改变,请问如何解决?

我这边测试没有复现您的问题
image.png280914611.png

推测您在设置数组公式的时候引用的位置有误导致,建议您修改数组公式设置的区域

如果仍为解决您的问题建议您上传能复现问题的ssjson文件
回复 使用道具 举报
一蓑烟雨
初级会员   /  发表于:2020-10-31 20:56:22
5#
您好,使用   sheet.setDataSource(dataSource); 方法加载数据后会覆盖表头 A B C D列,再设置公式后导出就会与这个问题。

而且公式必须从第0行开始,从第一行开始就无效

有效:
sheet.setArrayFormula(0, 18, dataSource.length, 1, "L1" + dataSource.length + "*P1" + dataSource.length);

无效:
sheet.setArrayFormula(1, 18, dataSource.length, 1, "L1" + dataSource.length + "*P1" + dataSource.length);
企业微信截图_16041488384716.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-2 10:16:57
6#
本帖最后由 lynn512 于 2020-11-2 11:45 编辑

您好,看到您发的另一个帖子,您绑定数据源是使用表格绑定还是表单绑定呢?确定了这个前提后才知道如何处理您的问题。
表格绑定下不支持使用 setArrayFormula 设置区域公式。
关于如何给表格设置公式,您可以参考下面的帖子:https://gcdn.grapecity.com.cn/fo ... 7&fromuid=59119
https://gcdn.grapecity.com.cn/showtopic-81259-1-8.html
https://gcdn.grapecity.com.cn/fo ... 81952&extra=&page=1
附件为表格设置公式的demo,您可以参考下。







表格公式.zip

2.16 MB, 下载次数: 65

回复 使用道具 举报
一蓑烟雨
初级会员   /  发表于:2020-11-3 11:59:21
7#
您好,我使用的是表单绑定,但是必须从第0行开始设置公式才有效,从第一行开始就不可以。
回复 使用道具 举报
一蓑烟雨
初级会员   /  发表于:2020-11-3 12:51:46
8#
您好,看了您给的Demo,但是使用这个API似乎有问题

var datasource = new GC.Spread.Sheets.Bindings.CellBindingSource(dataSource);
            sheet.setDataSource(datasource);

            var table = sheet.tables.all()[0];
            table.setColumnDataFormula(2, "=[@age]");
            sheet.recalcAll()

使用这个API无法获取table,也就不能调用setColumnDataFormula方法。

企业微信截图_16043790784716.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-3 13:36:22
9#

var table = sheet.tables.all()[0];
使用此API的前提是您使用的是表格绑定,您是如何设置的呢?
建议您提供一份能复现此问题的demo,我这边来看下怎么修改。
回复 使用道具 举报
一蓑烟雨
初级会员   /  发表于:2020-11-3 14:07:15
10#
您好,这是我的demo,麻烦您看一下!

demo.zip

1.5 KB, 下载次数: 55

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部