有没有一种方法可以锁定单个单元格(而不是整个Excel工作表)以防止格式化?

时间:2019-05-23 14:40:09

标签: excel apache-poi

我通过执行以下代码来防止用户格式化生成的Excel文件中工作表中的单元格:

XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet =  workbook.createSheet("sheet1");
CTSheetProtection prot = sheet.getCTWorksheet().getSheetProtection();
prot.setFormatCells(true);

有没有一种方法可以锁定工作表中单个单元格的格式,而不必锁定整个工作表的格式?

同样,是否可以将其他保护措施应用于单个细胞?

例如,过滤和排序-如果有人试图将这些操作应用于包含该操作已被锁定的单元格的一组单元格,则将被禁止。

2 个答案:

答案 0 :(得分:0)

在“设置单元格格式”对话框中,可以切换锁定或隐藏的单元格。当您使用“保护表”时,可以从“审阅”选项卡中选择保护工作表和锁定单元格的内容,并选择要允许用户对锁定/解锁单元格进行的操作。密码保护工作表,未经您的许可,用户将无法删除锁。

我假设您的大多数单元都将被解锁,所以选择所有单元并设置为“解锁”,然后锁定要锁定的单元。

我不确定通过VBA执行此操作的代码,但查找起来应该很容易。 从逻辑上讲,您希望选择所有单元格,然后将cells.format.protection.locked设置为false,然后选择要锁定的范围并将其设置为true。您可以轻松地记录一个宏来查找此代码。

答案 1 :(得分:0)

您应该检查此链接,我已经编写了一种自定义方法来锁定单张或多张Excel文件中的单个或一系列单元格。

https://stackoverflow.com/a/63299413/6835092

对于单个单元格锁定,只需提及相同的范围值。即a1:a1。这只会锁定a1单元。