Есть ли способ заблокировать отдельные ячейки (не всю таблицу Excel), чтобы предотвратить форматирование? - PullRequest
0 голосов
/ 23 мая 2019

Я запрещаю пользователю форматировать ячейки на листе в сгенерированном файле Excel, выполнив этот код:

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

Есть ли способ заблокировать форматирование для отдельных ячеек на листе в отличие отнужно ли блокировать форматирование для всего листа?

Аналогично, есть ли способ применить другие защиты к отдельным ячейкам?

Например, фильтрация и сортировка - если кто-то пытался применить эти операциидля группы ячеек, включающей ячейку, которая была заблокирована для этой операции, это будет запрещено.

1 Ответ

0 голосов
/ 23 мая 2019

В диалоговом окне «Формат ячеек» вы можете переключать ячейки заблокированными или скрытыми.При использовании «Защитить лист» На вкладке «Обзор» вы можете выбрать защиту листа и содержимого заблокированных ячеек, а также то, что вы хотите разрешить пользователю делать с заблокированными / разблокированными ячейками.Защитите лист паролем, и пользователи не смогут снять блокировку без вашего разрешения.

Я предполагаю, что большинство ваших ячеек должны быть разблокированы, поэтому выберите все ячейки и установите их как разблокированные, а затем заблокируйте их.Вы хотите заблокировать.

Я не уверен в коде, чтобы сделать это через VBA, но это должно быть достаточно легко найти.Логично, что вы хотите выбрать все ячейки, а затем установить в значение cell.format.protection.locked значение false, а затем выбрать диапазоны, которые вы хотите заблокировать, и установить для них значение true.Вы можете легко записать макрос, чтобы найти этот код.

...