首页 > 解决方案 > 有没有办法锁定单个单元格(不是整个 Excel 工作表)以防止格式化?

问题描述

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

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

有没有办法锁定工作表中单个单元格的格式,而不是锁定整个工作表的格式?

同样,有没有办法将其他保护措施应用于单个单元格?

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

标签: excelapache-poi

解决方案


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

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

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


推荐阅读