找回密码
 立即注册

QQ登录

只需一步,快速开始

阿仁
金牌服务用户   /  发表于:2023-11-14 10:10  /   查看:2231  /  回复:21
1金币
本帖最后由 Richard.Huang 于 2023-11-15 09:58 编辑

产品:SpreadJS
版本:V15.1.0

我想设置某列不可编辑,但是使用以下代码,整个单元格都被锁定了,麻烦问下什么原因

  1. sheet.options.isProtected = true;

  2. const style = new GC.Spread.Sheets.Style();
  3. style.locked = false;
  4. sheet.setDefaultStyle(style);

  5. const style1 = new GC.Spread.Sheets.Style();
  6. style1.locked = true;
  7. sheet.getRange(0, 0, 4, 4).setStyle(style1);
复制代码

最佳答案

查看完整内容

这是目前的设计使然,将Excel文件导入到SpreadJS中后,里面的单元格就已经被设置上了样式,这些单元格也就不再受SpreadJS的默认样式所约束了。 只有那些没有被修改过样式的单元格才会应用默认样式:

21 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 10:10:40
来自 8#
这是目前的设计使然,将Excel文件导入到SpreadJS中后,里面的单元格就已经被设置上了样式,这些单元格也就不再受SpreadJS的默认样式所约束了。

只有那些没有被修改过样式的单元格才会应用默认样式:

image.png457506102.png
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 10:57:59
2#
您好,请参考以下代码:

let designer = GC.Spread.Sheets.Designer.findControl(document.querySelector(".gc-designer-container"));
let spread = designer.getWorkbook();
let sheet = spread.getActiveSheet();

let style = new GC.Spread.Sheets.Style();
style.locked = false;
sheet.setDefaultStyle(style);

sheet.getRange(-1, 0, -1, 1).locked(true);

sheet.options.isProtected = true;

设置第一列locked为true,并开启表单保护即可。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
阿仁
金牌服务用户   /  发表于:2023-11-14 11:10:30
3#
Joestar.Xu 发表于 2023-11-14 10:57
您好,请参考以下代码:

let designer = GC.Spread.Sheets.Designer.findControl(document.querySelecto ...

还是不行,跟我这个上面的判断有关系吗?
image.png526994628.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 12:04:09
4#
您好,我没太看明白您这边代码的意思,您提供一个可以复现该问题的Demo,我们这边调研一下看看。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
阿仁
金牌服务用户   /  发表于:2023-11-14 14:17:44
5#
Joestar.Xu 发表于 2023-11-14 12:04
您好,我没太看明白您这边代码的意思,您提供一个可以复现该问题的Demo,我们这边调研一下看看。

你用这个文件试试

test (2).zip

8.42 KB, 下载次数: 101

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-14 16:16:54
6#
我将您提供的附件打开后导入到SpreadJS中,显示如下:

image.png611831054.png

我注意到您这个JSON中单元格已经被添加上了样式,且这些样式的locked属性为false,在这种情况下,修改DefaultStyle是无法生效的。

image.png671621398.png

所以,要实现您的需求,需要用getRange接口去将那些不禁止编辑的单元格的locked属性设置为false才可以。
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
阿仁
金牌服务用户   /  发表于:2023-11-14 16:31:40
7#
Joestar.Xu 发表于 2023-11-14 16:16
我将您提供的附件打开后导入到SpreadJS中,显示如下:

那我感觉这是一个bug,我只是合并了首行单元格,并且冻结了首行。
回复 使用道具 举报
阿仁
金牌服务用户   /  发表于:2023-11-15 14:57:18
9#
Joestar.Xu 发表于 2023-11-14 18:14
这是目前的设计使然,将Excel文件导入到SpreadJS中后,里面的单元格就已经被设置上了样式,这些单元格也就 ...

您好,我表格设置好了,但是我原有的树形结构因为保护无法展开,这个怎么处理?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-15 15:09:17
10#
您好,表单保护中有两个选项可以控制是否允许展开,将它们置为true即可:

image.png365418700.png

参考链接:https://demo.grapecity.com.cn/sp ... t/protection/purejs
SpreadJS 17.0.8 | GcExcel 7.1.1 已发布~
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部