找回密码
 立即注册

QQ登录

只需一步,快速开始

远光软件

初级会员

47

主题

119

帖子

378

积分

初级会员

积分
378

活字格认证

远光软件
初级会员   /  发表于:2016-11-30 16:20  /   查看:3910  /  回复:5
表格是通过数据绑定生成的,通过sheet.setFormula设置的运算公式取其他单元格的数,只有第一行才会自动运算,其他行都不会自动运算。经过反复试验,在表格添加一行就可以自动运算
请问怎么样设置实现自动运算?



5 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2016-11-30 17:06:10
沙发
看你的描述我猜测你是先 setFormula 或者 fromJSON 后再 addCustomName 或者 addCustomFunction。如果方便的话能否提供一个重现问题的 sample 或者 json,我们好给你提供解决方案
回复 使用道具 举报
远光软件
初级会员   /  发表于:2016-12-1 09:12:27
板凳
不是这样的,我先用sheet.setDataSource(dataSource);进行数据绑定,再进行循环设置sheet.setFormula(row, col, formula);后就出现第一行能自动运算,其他行不自动运算。用sheet.addRows(row + rowCount, 1);添加一行后其他行就能自动运算。
尝试过导出json后,再导入是正常的。
另外,请问怎么样设置编辑单元格时只改变输入值而不改变单元格的公式?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-12-1 10:08:22
地板
之后调一把 resumeCalcService() 看看,根据你的描述,我猜测不到问题出在哪,如果不行的话你只能提供一个 sample 了。

调用 spread.canUserEditFormula(false) 可以禁止用户编辑公式。如果你不想用户把你设置的公式清除了就用lock 把有公式的单元格锁定
回复 使用道具 举报
远光软件
初级会员   /  发表于:2016-12-2 09:19:38
5#
我大概找倒原因,比如我把一个只有2行的数据源绑到表格上,我再用sheet.addrows添加多8行,并把这10行的同一列上都设置公式,这时只有那两行有数据的才会自动运算,其余那8行新增的不会,请问有什么方法可以解决?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-12-2 17:38:54
6#
没有问题呀,请问你具体的操作步骤或者代码是什么,一定要能根据你的描述或者代码能重现问题的:
            var dataSource = { tableData: [{ id: 1, value: "aaa" }, { id: 2, value: "badd" }] };
            sheet.setDataSource(new GcSpread.Sheets.CellBindingSource(dataSource));
            var table = sheet.addTable("table1", 1, 1, 3, 4, GcSpread.Sheets.TableStyles.dark1());
            table.bindingPath("tableData");
            var info1 = new GcSpread.Sheets.TableColumnInfo("id");
            var info2 = new GcSpread.Sheets.TableColumnInfo("value");
            info1.dataField("id");
            info1.name("id");
            info2.dataField("value");
            info2.name("value");
            table.bindColumns([info1, info2]);

            sheet.addRows(2, 8);
            for (var i = 2; i < 12; i++) {
                sheet.setFormula(i, 2, "=[id]");
            }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部