如何使用rubyXL锁定工作表中的现有单元格,但不锁定所有空单元格?(我不想让用户跳过任何障碍,比如要求他或她在输入新数据之前创建新列。)
我想出了如何使用StackOverflow帖子中介绍的技术锁定现有单元格:How can we protect some parts of a sheet using rubyXL?(基本思想是:(1)创建一个新的xf,(2)将新的xf注册到工作簿,(3)将所有现有单元格的style_index
设置为使用此xf,然后(4)为工作表设置WorksheetProtection
。)
但是,当我这样做并在Excel中打开工作簿时,工作表中的所有空单元格也被锁定。
原则上,我需要向所有未使用的单元格添加一个"unlocked" xf;但是,由于这些单元格还不存在,因此没有要设置"unlocked" xf的Cell对象。
在Excel中有一种方法可以做到这一点:
1.单击工作表的左上角以选择所有单元格。
1.转到"格式"-〉"格式单元格",选择"保护"标签,并取消选中"锁定"框。
1.选中已有的已占用单元格,进入"格式"-〉"单元格格式",选择"保护"选项卡,勾选"锁定"框。
1.转到"工具"-〉"保护"-〉"保护工作表"并保护工作表。
当我按照这些步骤操作,然后使用rubyXL检查工作表时,我看到有三个XL对象:
1.默认XL对象
1.启用保护的XL对象
1.专门禁用保护的XL对象。
现有的单元格都使用style/XL 2,所以我想一定有办法指定工作表中所有未使用的单元格默认为style/XL 3;但是,我不知道如何使用rubyXL指定它。
有什么想法吗?
1条答案
按热度按时间2sbarzqh1#
我想通了:
(我还在这里放了一份代码:https://github.com/kurmasz/rubyXL-recipes)