找回密码
 立即注册

QQ登录

只需一步,快速开始

shero

注册会员

9

主题

20

帖子

81

积分

注册会员

积分
81
shero
注册会员   /  发表于:2024-10-19 15:36  /   查看:106  /  回复:8
如何设置某单元格数据,不可编辑且不可查看(比如:展示内容为空或者“-”),但不改变单元格的值

8 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:7 天前
沙发
本帖最后由 Ellia.Duan 于 2024-10-21 11:48 编辑

您好!可以通过表单保护支持对单元格不可编辑,单元格默认状态为锁定状态,配合表单保护即可禁止对单元格编辑。如果业务场景中的数据都是数值,那么可以通过对单元格设置formatter为“*****”保护单元格数据,但是公式编辑栏中仍然显示真实数据,如下图所示。
1729471144748.png545242919.png

如果想让单元格显示的内容和公式编辑栏中显示的单元格内容都保密不可见,那么可以参考如下步骤:

1. 借用SpreadJS中Worksheet的隐藏功能,将需要保护的数据集中在一张Worksheet中,然后隐藏这张Worksheet,记为HiddenSheet。
2. 在其他Worksheet(记为VisibleSheet)中引用HiddenSheet中的单元格。
3. 对VisibleSheet中引用了HiddenSheet数据的单元格(记为FormulaCell),设置单元格背景色和字体颜色一致,达到单元格数据不可见但还存在的效果。
4. 对VisibleSheet开启表单保护,同时对FormulaCell通过CellRange:hidden()令其中的公式不可见,至此,公式编辑栏中的公式也不可见。
5. 如果不需要对整张Worksheet进行操作保护,可以结合单元格的锁定状态控制。

您可以评估下上述方案能否满足需要。
回复 使用道具 举报
shero
注册会员   /  发表于:7 天前
板凳
请问setFormatter这个方法可以批量设置吗
回复 使用道具 举报
shero
注册会员   /  发表于:7 天前
地板
sheet.setFormatter(1, 2, '****');  我这样设置的,没有生效,会是什么影响的呢?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
5#
本帖最后由 Wilson.Zhang 于 2024-10-21 11:46 编辑
shero 发表于 2024-10-21 09:25
请问setFormatter这个方法可以批量设置吗

可以的,通过CellRange实例设置formatter为“****”,参考如下代码:
  1. sheet.getRange(0, 0, 10, 10, GC.Spread.Sheets.SheetArea.viewport).formatter('****');
复制代码


回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
6#
shero 发表于 2024-10-21 11:10
sheet.setFormatter(1, 2, '****');  我这样设置的,没有生效,会是什么影响的呢?

代码是正常的,可以排查下执行代码的sheet是否您正在观察的sheet。如果排查无误,可以提供一个能够复现问题的demo或者截图录屏,我们据此分析下。
回复 使用道具 举报
shero
注册会员   /  发表于:7 天前
7#
企业微信截图_17294986541828.png149369811.png 只有第19行的数据不生效,其他行都生效,没有额外设置其他配置,很奇怪
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:7 天前
8#
shero 发表于 2024-10-21 16:18
只有第19行的数据不生效,其他行都生效,没有额外设置其他配置,很奇怪

第19行的数据是字符串而非数值,提供给您的设置方法只对数值有效。

对于字符串,可以尝试通过Worksheet:setValue()替换字符串内容为“****”。以第19行为例,在打开文件时,在代码中保存第19行各单元格的原始数据,并替换原始数据为加密字符串“****”;待用户访问结束后保存文件时,再从代码侧将单元格数据复原。您可以测试下看能否满足您的需求。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:4 天前
9#
您好!由于您较长时间未回复,且从跟帖回复中了解到问题已得到有效解答,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部