找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

261

帖子

1682

积分

超级版主

Rank: 8Rank: 8

积分
1682
Winny
超级版主   /  发表于:2021-8-19 16:32  /   查看:5015  /  回复:6
本帖最后由 Ellia.Duan 于 2024-4-19 16:46 编辑

很多用户在日常的开发中,经常会用到单元格保护的需求,本贴讲解如何使用在线表格编辑器及js代码来实现单元格保护。表单保护的机制: SpreadJS表单保护的机制与Excel完全一致,需要同时设置单元格锁定状态(locked)以及表单保护状态(isProtect)同时为true,才能让单元格禁止编辑。

1. 在线表格编辑器中实现表单保护
  (1)保护整个工作簿
         在线表格编辑器中没有直接将整个工作簿保护的操作按钮,需要依次设置每个sheet为保护状态,具体操作如下图所示
          image.png768361510.png
    ps:在进行表单保护时,可以按需选择表单保护后还允许用户做哪些操作,截图如下。
         image.png231940306.png
   (2)设置部分单元格可编辑
        SpreadJS默认单元格的锁定状态为True,设置部分单元格可以编辑操作如下:     
        step1: 选中目标单元格,右键点击设置单元格格式;
         image.png740989074.png   
        step2:将目标单元格保护(锁定)状态设置为False;
         image.png279857177.png
        step3: 右键当前sheetTab,选择保护工作表;
       image.png161938170.png
       设置完成之后,就只有蓝色区域的单元格可以编辑,其它区域的单元格无法编辑。
    (3)设置部分单元格不可编辑
      step1: 选中整张工作表,右键点击设置单元格格式;
       image.png40937499.png
     step2: 取消单元格保护(锁定)状态;
      image.png443336486.png
    step3: 选中不允许编辑的单元格,右键设置单元格格式,将对应的锁定状态勾选;
    image.png559533385.png
    step4: 右键当前sheet页底部tab,点击保护工作表。
    image.png959424743.png
    设置完成后,就只有蓝色单元格无法编辑,其余单元格均可正常编辑。
2. js代码实现表单保护
   (1) 设置整个工作簿不可编辑     
  1. let sheetCount = spread.getSheetCount()
  2. for(let i=0; i<sheetCount; i++){
  3.     spread.getSheet(i).options.isProtected = true
  4. }
复制代码

     (2) 设置部分单元格可以编辑
  1. //设置A1~B5可以编辑,其余单元格不可以编辑

  2. let range = sheet.getRange(0,0,5,2)
  3. range.locked(false)
  4. sheet.options.isProtected = true
复制代码

     部分用户可能会有设置整行或整列可以编辑,其余不可编辑的需求,那如何获取整行或整列呢?
  1. //获取8~10行   -1在此代表所有列
  2. let range = sheet.getRange(7,-1,3,-1)

  3. //获取G~H列(-1在此代表所有行)

  4. let range = sheet.getRange(-1,6,-1,2)
复制代码


    (3)设置部分单元格不能编辑
  1. let sheet = spread.getActiveSheet()
  2. let defaultStyle = sheet.getDefaultStyle()
  3. defaultStyle.locked = false
  4. sheet.setDefaultStyle(defaultStyle)
  5. let range = sheet.getRange(0,0,5,5)
  6. range.backColor('#9cf')
  7. range.locked(true)
  8. sheet.options.isProtected = true
复制代码
   关于如何设置表单保护到此就结束了,但细心的小伙伴可能会留意到,在在线表格编辑器中设置表单保护后,还有勾选表单保护模式下允许用户做什么操作的选型,那用js如何实现这些选项呢?具体代码见下图:
  1. //表单保护下允许用户调整行高列宽
  2. let sheet = spread.getActiveSheet()
  3. sheet.options.protectionOptions.allowResizeRows = true
  4. sheet.options.protectionOptions.allowResizeColumns = true
复制代码
表单设置保护后具体还可以设置那些属性可以参考:https://demo.grapecity.com.cn/sp ... rksheet/protection#






6 个回复

倒序浏览
MarlonYJG
注册会员   /  发表于:2024-4-18 21:30:37
沙发
设置整个工作簿不可编辑   中函数应该写错了“”let sheetCount = spread.getActiveSheet()“”

workbook.getSheetCount();

评分

参与人数 1金币 +200 收起 理由
Ellia.Duan + 200

查看全部评分

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-19 16:45:48
板凳
本帖最后由 Ellia.Duan 于 2024-4-19 16:47 编辑
MarlonYJG 发表于 2024-4-18 21:30
设置整个工作簿不可编辑   中函数应该写错了“”let sheetCount = spread.getActiveSheet()“”

workbo ...

感谢指正,我已在原贴中修改。稍后有金币奖励。
回复 使用道具 举报
MarlonYJG
注册会员   /  发表于:2024-4-20 22:54:35
地板
Ellia.Duan 发表于 2024-4-19 16:45
感谢指正,我已在原贴中修改。稍后有金币奖励。

金币能兑换成人民币或者$吗? 我这个人比较现实。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 10:57:24
5#
本帖最后由 Ellia.Duan 于 2024-4-22 11:17 编辑
MarlonYJG 发表于 2024-4-20 22:54
金币能兑换成人民币或者$吗? 我这个人比较现实。

请参考《金币兑换大换新》公告,攒够金币,可以兑换小礼品和京东购物卡。
回复 使用道具 举报
MarlonYJG
注册会员   /  发表于:2024-4-24 16:03:43
6#
Ellia.Duan 发表于 2024-4-22 10:57
请参考《金币兑换大换新》公告,攒够金币,可以兑换小礼品和京东购物卡。

实实在在的money 可以兑换吗
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-25 11:09:45
7#
您好,我们有一套金币兑换规则,请参考楼上的回复。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部