找回密码
 立即注册

QQ登录

只需一步,快速开始

tyasrio

注册会员

4

主题

11

帖子

132

积分

注册会员

积分
132
最新发帖
tyasrio
注册会员   /  发表于:2019-2-18 12:55  /   查看:2844  /  回复:3
spread.sheets.forEach(function(sheet) {
  sheet.options.isProtected = false;
  sheet.options.protectionOptions = {
    allowSelectLockedCells : false,
    allowSelectUnlockedCells : false,
  };
  sheet.options.isProtected = true; //出错 Uncaught TypeError: Cannot read property 'save' of null
});

for (let i = 0; i < spread.getSheetCount(); i++) {
  spread.setActiveSheetIndex(i);
  let tmpSheet = spread.getActiveSheet();
  tmpSheet.options.isProtected = false;
  tmpSheet.options.protectionOptions = {
      allowSelectLockedCells : false,
      allowSelectUnlockedCells : false,
  };
  tmpSheet.options.isProtected = true; //这样就好使
}




3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 14:16:55
沙发
您好,您这个问题我这边没能重现,能否提供一个可以重现问题的ssjson或excel ?

猜测针对sheet的isProtected属性的修改,会引起表格的重绘,这时如果遇到针对没有激活过的表格,

可能会出现一些问题。您提供的第二段代码避免了这个问题的发生。
回复 使用道具 举报
tyasrio
注册会员   /  发表于:2019-2-18 15:32:18
板凳
KevinChen 发表于 2019-2-18 14:16
您好,您这个问题我这边没能重现,能否提供一个可以重现问题的ssjson或excel ?

猜测针对sheet的isProtec ...

>这时如果遇到针对没有激活过的表格
这个是指新追加的sheet吗?(新追加的sheet是由旧的sheet的toJSON作成的,非表示)
还是指sheet页被打开过?(这样我在作成时可以设置一次activeSheet)
如果没有代替方法,那就没事了。。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 17:10:44
地板
您好,如果是追加sheet,最好是在激活状态下进行修改,只需要挂起spread的paint操作,就不会有太多的性能损耗。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部