找回密码
 立即注册

QQ登录

只需一步,快速开始

johnly
初级会员   /  发表于:2021-3-3 14:58  /   查看:5165  /  回复:11
sheet.getRange(0, 0, rowCount, colCount, Viewport).locked(true);

上面这行代码确实可以设置单个sheet的所有单元格不能编辑,但是每次都要先获取 rowCount  colCount,这两个又是不固定的。我觉得有小点麻烦。

所以我问问有没有方法可以一次性设置所有的sheet中的所有的单元格都不能编辑。

谢谢。

11 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-3 15:11:44
沙发
单元格默认 locked 为true,直接设置表单保护,表单内的所有单元格都不可编辑。
表单保护代码如下:
sheet.options.isProtected = true;

具体请参考学习指南:
https://demo.grapecity.com.cn/sp ... t/protection/purejs
回复 使用道具 举报
johnly
初级会员   /  发表于:2021-3-3 15:47:18
板凳
lynn512 发表于 2021-3-3 15:11
单元格默认 locked 为true,直接设置表单保护,表单内的所有单元格都不可编辑。
表单保护代码如下:
shee ...

你好,
const style = sheet.getDefaultStyle();style.locked = true;
sheet.setDefaultStyle(style);

sheet.options.isProtected = true;

上面的代码中的  style.locked = true; 是指的什么东西锁定呀?

style.locked = true; 和 sheet.options.isProtected = true; 有什么区别呀?


回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-3 16:04:49
地板
const style = sheet.getDefaultStyle();style.locked = true;
指的是表单的默认样式(可以理解为全局样式)的locked为true。这表示所有单元格状态为 锁定。
设置表单保护后,单元格状态为锁定 则不可编辑。单元格状态为 未锁定,表示可以编辑。

事实上,sheet 单元格默认就是locked 为true(即 锁定)
所以无需设置上述代码,
只要设置  sheet.options.isProtected = true ,
就可以实现所有单元格不可编辑。
image.png491404418.png

请参考以下链接技术博客,了解表单保护更多知识:
https://gcdn.grapecity.com.cn/showtopic-75543-1-10.html

回复 使用道具 举报
johnly
初级会员   /  发表于:2021-3-3 16:52:23
5#
lynn512 发表于 2021-3-3 16:04
const style = sheet.getDefaultStyle();style.locked = true;
指的是表单的默认样式(可以理解为全局样式 ...

学到了。

sheet.options.isProtected = true ,是设置单个sheet。那怎么设置所有的sheet呢?

先获取到所有的sheet,再分别设置吗?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-3 17:12:57
6#
是的。表单保护 顾名思义,是针对表单来设置的。
如果需要对整个工作簿的表单设置表单保护,可以遍历获取设置。
回复 使用道具 举报
johnly
初级会员   /  发表于:2021-3-3 17:18:06
7#
lynn512 发表于 2021-3-3 17:12
是的。表单保护 顾名思义,是针对表单来设置的。
如果需要对整个工作簿的表单设置表单保护,可以遍历获取 ...

如何获取 所有的 sheet 呢?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-3-3 17:49:16
8#
可以使用 getSheet()  获取指定表单。
API链接:https://demo.grapecity.com.cn/spreadjs/help/api/GC.Spread.Sheets.Workbook.html#getSheet、遍历获取所有表单即可

这些属于基础的API,建议您先在学习指南学习SpreadJS相关基础功能。
https://demo.grapecity.com.cn/sp ... ialize-sheet/purejs

image.png421795043.png
同时我们提供了SpreadJS官方支持QQ群,这些问题通过@群里机器人可以得到更快的回应。
QQ群:720389894

回复 使用道具 举报
johnly
初级会员   /  发表于:2021-3-4 10:53:00
9#
lynn512 发表于 2021-3-3 17:49
可以使用 getSheet()  获取指定表单。
API链接:https://demo.grapecity.com.cn/spreadjs/help/api/GC.Spr ...

好的,谢谢

我导入一个excel文件之后,用 spread.getSheetCount(); 获取 sheet的总数,结果为4,但是界面中能看到的sheet却只有3个啊。

具体代码见附件

操作步骤

选中附件中的【1.施工图设计台账.xlsx】文件并上传 ,上传完成后点击【获取sheetCount】,控制台打印出4。但是界面中只有三个sheet啊。

导入导出excel.zip

1.05 MB, 下载次数: 486

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-4 12:24:09
10#
johnly 发表于 2021-3-4 10:53
好的,谢谢

我导入一个excel文件之后,用 spread.getSheetCount(); 获取 sheet的总数,结果为4,但是 ...

因为您的Excel中有一个表单是隐藏的 image.png420646972.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部