找回密码
 立即注册

QQ登录

只需一步,快速开始

宋婧雯

注册会员

2

主题

2

帖子

18

积分

注册会员

积分
18
最新发帖
宋婧雯
注册会员   /  发表于:2020-5-27 17:08  /   查看:3212  /  回复:3
//公式部分
//原材料明细的公式
    setFormulaFun: function (sheet, start, end) {
        for (var i = 0; i < sheet.getRowCount(); i++) {
            for (var j = 0; j < sheet.getColumnCount(); j++) {
                if (i >= start && i <= end - 1) {
                    if (j == 17) {
                        sheet.setFormula(i, j, 'IFERROR(RC[-1]/RC[-2]," ")', GC.Spread.Sheets.SheetArea.viewport);
                    } else if (j == 19) {
                        sheet.setFormula(i, j, 'IFERROR(IF(RC[-16]*RC[-1]*(RC[-4]-RC[-3])=0," ",RC[-16]*RC[-1]*(RC[-4]-RC[-3]))," ")', GC.Spread.Sheets.SheetArea.viewport);
                    } else if (j == 20) {
                        sheet.setFormula(i, j, 'IFERROR((RC[-17]*(RC[-9]*RC[-5]-RC[-1]))," ")', GC.Spread.Sheets.SheetArea.viewport)
                    }
                } else if (i == end) {
                    if (j == 15 || j == 16 || j == 17 || j == 19 || j == 20) {
                        sheet.setFormula(i, j, 'IFERROR(SUM(R[-7]C:R[-1]C)," ")', GC.Spread.Sheets.SheetArea.viewport);
                    }
                }
            }
        }
    },



//初始化sheet页
initRawMaterialSheet: function (spread, data) {
        var me = this;

        let sheet = spread.getSheetFromName('原材料明细')

        spread.suspendPaint();

        let CbdRawMaterialIndex = 6;

        sheet.options.isProtected = false;

        sheet.addRows(CbdRawMaterialIndex, data.CbdRawMaterial.length-1);

        for (i = 1; i < data.CbdRawMaterial.length; i++) {
            sheet.copyTo(
                CbdRawMaterialIndex,
                -1,
                CbdRawMaterialIndex + i,
                -1,
                1,
                sheet.getColumnCount(),
                GC.Spread.Sheets.CopyToOptions.all
            );
        }

        sheet.options.isProtected = true;

        // //给整个表设置绑定数据,包括table
        let dataSource = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
        sheet.setDataSource(dataSource);

        //给单元格设置公式
        this.setFormulaFun(sheet, me.tableBeginRowIndex, me.tableBeginRowIndex + data.CbdRawMaterial.length)

        spread.resumePaint();
    },


priceDesign.zip

62.94 KB, 下载次数: 79

3 个回复

倒序浏览
chan
注册会员   /  发表于:2020-5-27 17:21:11
沙发
往datasource里面push空对象就行了,不要用addRows函数

评分

参与人数 1金币 +300 收起 理由
dexteryao + 300 很给力!

查看全部评分

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-27 17:32:31
板凳
问题未在V13.1.1中重现,测试代码

        let CbdRawMaterialIndex = 6;
        sheet.options.isProtected = false;
        sheet.addRows(CbdRawMaterialIndex, data.CbdRawMaterial.length-1);
     for (i = 1; i < data.CbdRawMaterial.length; i++) {
            sheet.copyTo(
                CbdRawMaterialIndex,
                -1,
                CbdRawMaterialIndex + i,
                -1,
                1,
                sheet.getColumnCount(),
                GC.Spread.Sheets.CopyToOptions.all
            );
        }

        let dataSource = new GC.Spread.Sheets.Bindings.CellBindingSource(data);
        sheet.setDataSource(dataSource);
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-27 18:16:59
地板
补充,table插入行用
table.insertRows(0, data.CbdRawMaterial.length-1, true);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部