找回密码
 立即注册

QQ登录

只需一步,快速开始

王五子

金牌服务用户

9

主题

26

帖子

89

积分

金牌服务用户

积分
89
王五子
金牌服务用户   /  发表于:2024-8-27 14:58  /   查看:1085  /  回复:14
1金币
本帖最后由 王五子 于 2024-8-28 12:09 编辑

image.png367805480.png

按照以上方法添加表单保护,正常编辑excel表格是没有问题的,一旦通过导入导进来的模版按照以上代码就会出现locked = false失效的问题,整张表都处于表单保护的状态,也就是默认设置的style4没有生效,相反如果先设置默认的style3就没有问题

formdatafill (3).vue

39.95 KB, 下载次数: 37

最佳答案

查看完整内容

您好, 之前一直提到样式存在优先级,单元格样式>行列样式>默认样式。 一般设置默认style后,单元格的样式(locked)发生了变化,如下图所示:此时查看A1单元格的locked属性已经为false 而拿到您的文件后,设置默认locked为false 此时获取A1单元格的locked属性还是true 。如下图所示: 为此,不能通过默认样式的方式设置locked,需要遍历单元格

14 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-27 14:58:40
来自 14#
本帖最后由 Ellia.Duan 于 2024-8-28 18:31 编辑

您好,
之前一直提到样式存在优先级,单元格样式>行列样式>默认样式。
一般设置默认style后,单元格的样式(locked)发生了变化,如下图所示:此时查看A1单元格的locked属性已经为false
image.png734010009.png

而拿到您的文件后,设置默认locked为false  此时获取A1单元格的locked属性还是true 。如下图所示:
image.png159702452.png

为此,不能通过默认样式的方式设置locked,需要遍历单元格
  1. sheet.getCell(-1,-1).locked(false)
  2. if(sheet.getCell(0,0).locked()){
  3.     for(let i = 0;i<sheet.getRowCount();i++){
  4.         for(let j = 0;j<sheet.getColumnCount();j++){
  5.             sheet.getCell(i,j).locked(false)
  6.         }
  7.     }
  8. }
  9. sheet.getRange(0,0,3,3).locked(true)
  10. sheet.protect()
复制代码



回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-27 15:49:55
2#
您好,在SpreadJS中,Style是有优先级的。
您提到了“正常编辑excel表格是没有问题的” 是因为上述代码是在新的干净的工作簿上的操作,此时没有样式冲突。

而“导入导进来的模版” 此模板可能已经设置了样式,由于优先级的问题,上述代码设置与其他样式有冲突,导致您的表单保护设置失效。

您是否可以上传下具体的模板文件,我们帮助您看下,基于模板,如何设置表单保护。
回复 使用道具 举报
王五子
金牌服务用户   /  发表于:2024-8-27 15:55:20
3#
Ellia.Duan 发表于 2024-8-27 15:49
您好,在SpreadJS中,Style是有优先级的。
您提到了“正常编辑excel表格是没有问题的” 是因为上述代码是 ...

随便导入的任何表单都会有这个问题,我希望的效果是我选定的sheetlockheadarr【也就是表头】是不可编辑的区域而其他区域都是可编辑状态,因此默认设置的样式locked = false,然后再去渲染arr中的区域locked = true
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-27 17:18:45
4#
您的代码可以将表单保护放在最后
  1. sheet.options.isProtected = true
复制代码
如果还未能解决,您可以上传一个您出现问题的文件。
回复 使用道具 举报
王五子
金牌服务用户   /  发表于:2024-8-27 19:32:55
5#
Ellia.Duan 发表于 2024-8-27 17:18
您的代码可以将表单保护放在最后
如果还未能解决,您可以上传一个您出现问题的文件。

调换isprotected的位置是没有用的,附件已上传,有没有其他表单保护的方式阿,感觉这个方法不太可行了
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-28 09:02:04
6#
您好,没有看到您的附件,请再次检查下,是否上传了附件。
回复 使用道具 举报
王五子
金牌服务用户   /  发表于:2024-8-28 12:10:02
7#
Ellia.Duan 发表于 2024-8-28 09:02
您好,没有看到您的附件,请再次检查下,是否上传了附件。

附件可以看了麻烦尽快帮忙解决一下谢谢
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-28 13:33:27
8#
您好,看到您上传的附件是vue文件,但是需要一个json文件。请重新上传下出现问题的json文件。
回复 使用道具 举报
王五子
金牌服务用户   /  发表于:2024-8-28 14:14:52
9#
没明白你要的json是什么 没有报错就是默认设置的style没有生效,怎么解决不生效问题或者就是你上边说的优先级问题,挪动isprotected的先后位置依然是不生效的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部