找回密码
 立即注册

QQ登录

只需一步,快速开始

梅梅梅梅
中级会员   /  发表于:2023-9-12 18:07  /   查看:752  /  回复:5
1金币
我有一个表格,一个单元格为了设置不可编辑状态,设置了单元格锁定状态,然后整个工作表设置了保护状态,然后我新增了一行,复制了样式过来,但是这个不可编辑状态没有复制过来,我新增一行的代码是这么写的。

image.png191304625.png
image.png895011901.png

insertTable() {
    var sheet = spread.getActiveSheet();
    if (sheet) {
        sheet.suspendEvent();
        let table=sheet.tables.all()[0];
        let allSheets=spread.toJSON().sheets;
        let name = sheet.name();
        let activeSheet=allSheets[name];
        let col=null;
        let copyRow=null;
        if(activeSheet.tables[0].useFooterDropDownList){//是否有汇总行
            sheet.addRows(sheet.getRowCount()-1, 1);
            // table.insertRows(sheet.getRowCount() - 4, 1, true);
            let dataRange=table.dataRange();
            let row=dataRange.rowCount;
            col=dataRange.colCount;
            copyRow=row+dataRange.row
            sheet.copyTo(copyRow-2, 0, copyRow-1, 0, 1, col, GC.Spread.Sheets.CopyToOptions.style|GC.Spread.Sheets.CopyToOptions.formula|GC.Spread.Sheets.CopyToOptions.tag);
            sheet.copyTo(copyRow-2, 0, copyRow-1, 0, 1,GC.Spread.Sheets.CopyToOptions.all)
            var rh = sheet.getRowHeight(copyRow-2, GC.Spread.Sheets.SheetArea.viewport);
            var rowCount = sheet.getRowCount();
            // 挂起事件响应
            sheet.setRowHeight(copyRow-2, rh, GC.Spread.Sheets.SheetArea.viewport);
            for (let i = 0; i < col; i++) {
                let tag = sheet.getTag(copyRow-2, i);
                tag=this.getCellTag(tag)
                if (tag.comboxTree) {
                    let cell = sheet.getCellType(copyRow-2, i)
                    var cellType = new ComboTreeCellType({onlyReturnLeaf:tag.comboxTree.onlyReturnLeaf});
                    cellType.items(cell._items);
                    sheet.setCellType(copyRow-1, i, cellType);
                }
            }
        }else{
            sheet.addRows(sheet.getRowCount(), 1);
            table.insertRows(sheet.getRowCount() - 3, 1, true);
            let dataRange=table.dataRange();
            let row=dataRange.rowCount;
            col=dataRange.colCount;
            copyRow=row+dataRange.row
            sheet.copyTo(row-1, 0, row, 0, 1, col, GC.Spread.Sheets.CopyToOptions.style|GC.Spread.Sheets.CopyToOptions.formula|GC.Spread.Sheets.CopyToOptions.tag);
            sheet.copyTo(copyRow-2, 0, copyRow-1, 0, 1,GC.Spread.Sheets.CopyToOptions.all)
            var rh = sheet.getRowHeight(row-1, GC.Spread.Sheets.SheetArea.viewport);
            var rowCount = sheet.getRowCount();
            // 挂起事件响应
            sheet.setRowHeight(row, rh, GC.Spread.Sheets.SheetArea.viewport);
             //新增行的下拉树数据及格式复制
            for (let i = 0; i < col; i++) {
                let tag = sheet.getTag(row-1, i);
                tag=this.getCellTag(tag)
                if (tag.comboxTree) {
                    let cell = sheet.getCellType(1, i)
                    var cellType = new ComboTreeCellType({onlyReturnLeaf:tag.comboxTree.onlyReturnLeaf});
                    cellType.items(cell._items);
                    sheet.setCellType(row, i, cellType);
                }
            }
           
        }

        // 恢复事件响应
        sheet.resumeEvent();
    }
},

最佳答案

查看完整内容

这个问题是由于您设置了表单保护导致的,您在执行代码前先关闭表单保护,代码执行后再关闭表单保护即可。

5 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-12 18:07:41
来自 4#
这个问题是由于您设置了表单保护导致的,您在执行代码前先关闭表单保护,代码执行后再关闭表单保护即可。

image.png183026427.png

image.png178162230.png
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-13 09:24:52
2#
我这边用copyTo测试了一下,locked属性是可以正常复制过来的。

image.png860086364.png

您提供一下完整的Demo,我这边帮你看看是什么原因。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2023-9-13 09:59:54
3#
Joestar.Xu 发表于 2023-9-13 09:24
我这边用copyTo测试了一下,locked属性是可以正常复制过来的。

右键运行templateFill.html,sheet名字为单表头,第三个单元格应收账款是一个公式,然后设置了不可编辑,第一行是不可编辑的,点击新增,新增行的单元格变成了可编辑状态。目前是通过又给locked赋值为true,手动设置了不可编辑,如下图红色框部分。

image.png993232421.png spreadDemo.zip (16.97 MB, 下载次数: 43)
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2023-9-13 14:44:31
5#
Joestar.Xu 发表于 2023-9-13 14:39
这个问题是由于您设置了表单保护导致的,您在执行代码前先关闭表单保护,代码执行后再关闭表单保护即可。
...

原来如此,测试过了,好用了。谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-13 14:45:04
6#
不客气哈
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部