请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Funo-TSC

金牌服务用户

8

主题

33

帖子

85

积分

金牌服务用户

积分
85
Funo-TSC
金牌服务用户   /  发表于:2025-1-17 16:43  /   查看:125  /  回复:3
1金币

功能: 开启保护单元格后菜单栏默认禁用了某些功能,现在需要把字体编辑放开。
问题:我是直接引入js文件中的配置菜单进行初始化的,是需要在js文件中修改对应菜单的配置,还是可以直接初始化的时候直接实现。
初始化的代码如下:
import { spreadjsMenu } from './util'
this.designer = new GC.Spread.Sheets.Designer.Designer(this.$refs.designerContainer)
      this.workbook = this.designer.getWorkbook()
      this.designer.setConfig(spreadjsMenu)


image.png427112426.png





spread.js

32.61 KB, 下载次数: 1

菜单配置

最佳答案

查看完整内容

您好,让您久等了! 这里的逻辑和Excel是相同的,如果一个单元格被锁定,同时开启了表单保护,那么在默认状态下,该单元格就是不可编辑的。 您可以看一下开启表单保护时,有一些选项,其中一个是“设置单元格格式”,将其勾选后,就可以修改单元格的各种格式样式了,除了您提到的字体,还有对其方式、边框、背景色等等都可以被编辑(“单元格右键-设置单元格格式”中的所有内容均可编辑)。 代码的设置方式为: 但是您也 ...

3 个回复

倒序浏览
最佳答案
最佳答案
Matthew.Xue
超级版主   /  发表于:2025-1-17 16:43:53
来自 2#
您好,让您久等了!
这里的逻辑和Excel是相同的,如果一个单元格被锁定,同时开启了表单保护,那么在默认状态下,该单元格就是不可编辑的。
您可以看一下开启表单保护时,有一些选项,其中一个是“设置单元格格式”,将其勾选后,就可以修改单元格的各种格式样式了,除了您提到的字体,还有对其方式、边框、背景色等等都可以被编辑(“单元格右键-设置单元格格式”中的所有内容均可编辑)。
image.png246200560.png
代码的设置方式为:
  1. sheet.options.protectionOptions.formatCells  = true
复制代码


但是您也看到了,这种方式并不完全满足您的需求,因为它开启了一些您可能不需要编辑的菜单。如果您只想让用户可以在表单保护的状态下可以编辑“字体”下的内容,可以通过以下demo来实现:


  1. let config = GC.Spread.Sheets.Designer.DefaultConfig
  2. config.commandMap = {}
  3. let ribbonNode = config.ribbon[0].buttonGroups[2] // 字体的ribbon路径
  4. let commands = []

  5. findNode(ribbonNode)

  6. function findNode(node) {
  7.     if (node instanceof Array) {
  8.         for (let i = 0; i < node.length; i++) {
  9.             findNode(node[i])
  10.         }
  11.     } else if (node.buttonGroups) {
  12.         findNode(node.buttonGroups)
  13.     } else if (node.commandGroup) {
  14.         findNode(node.commandGroup)
  15.     } else if (node.children) {
  16.         if (node.command) {
  17.             commands.push(node.command)
  18.         }
  19.         findNode(node.children)
  20.     } else if (node.commands) {
  21.         commands.push(...node.commands)
  22.     } else {
  23.         if (!node.type) {
  24.             commands.push(node)
  25.         }
  26.     }
  27. }

  28. commands.forEach(commandName => {
  29.     let command = GC.Spread.Sheets.Designer.getCommand(commandName)
  30.     if (command) {
  31.         console.log(commandName, command.visibleContext)

  32.         command.enableContext = "true"
  33.         config.commandMap[commandName] = command
  34.     }
  35. })


  36. designer.setConfig(config)
复制代码
image.png248194579.png
回复 使用道具 举报
Funo-TSC
金牌服务用户   /  发表于:2025-1-20 15:28:19
3#
Matthew.Xue 发表于 2025-1-20 10:25
您好,让您久等了!
这里的逻辑和Excel是相同的,如果一个单元格被锁定,同时开启了表单保护,那么在默认 ...

已经解决了,感谢!
回复 使用道具 举报
Matthew.Xue
超级版主   /  发表于:2025-1-20 15:54:27
4#
感谢您的支持~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部