Блокировка ячеек в сгенерированном JXL документе Excel - PullRequest
2 голосов
/ 19 июля 2010

Есть ли способ заблокировать определенные ячейки от редактирования пользователем?Я пробовал следующее:

WritableCellFormat cf = new WritableCellFormat();
cf.setLocked(true);
sheet.addCell(new Number(col, row, value, cf));

Однако это, похоже, не влияет на итоговую электронную таблицу, т. Е. Содержимое ячейки все еще можно изменить при открытии файла в Excel.

Ответы [ 3 ]

5 голосов
/ 23 февраля 2011

Вы должны «активировать» защиту для каждого листа.Я не уверен, как именно это должно быть сделано.Метод, который я нашел, -

sheet.setProtected(true);

, но, очевидно, этот метод больше не рекомендуется.Поэтому вам, вероятно, следует попытаться найти какой-нибудь более новый.

edit: извините, моя ошибка.Это блокирует каждую ячейку в листе.

edit 2: Это работает для меня, если вы заблокируете весь лист, а затем разблокируете редактируемые ячейки.

2 голосов
/ 25 мая 2014

Вот общие шаги для защиты ячейки без использования устаревших методов в принятом ответе
1. Создайте объект WritableCellFormat и установите для значение false значение
2. Когда вы добавляете ячейку, которую хотите разблокировать, включите WritableCellFormat в вызов метода addCell (...)
3. Вызовите getSettings на листе, чтобы получить объект SheetSettings, и вызовите setProtected (true), чтобы защитить лист и расширить защищенные ячейки, которые по умолчанию в Excel являются всеми ячейками.

WritableCellFormat cellFormat = new WritableCellFormat();
cellFormat.setLocked(false)

WritableSheet sheet = Worksheet.createSheet();

//Create a cell that is protected and a cell that is not protected
sheet.addCell(new Label(col1, row, "My Locked Cell");
sheet.addCell(new Label(col2, row, "My Unlocked Cell", cellFormat);

//Protect the sheet so that locked cells are locked and unlocked cells are unlocked
sheet.getSettings().setProtected(true);
0 голосов
/ 10 июля 2018

В более новых версиях вы должны сделать

sheet.protectSheet("password");

Заметил, что файл шаблона также должен быть защищен в настройках.В противном случае защита не сработала для меня должным образом в LibreOffice, лист выглядит как «зависший», вы даже не можете нажать на ячейку.Явно сделанная защищенная решаемая проблема, но вы должны установить флажки «использовать защищенные ячейки» или что-то в этом роде.PS Я сделал защиту паролем, но он не используется в конечном файле (пароль приходит из кода)

...