Блокировать один столбец в Excel с помощью Apache POI
Я хочу создать Excel, в котором заблокирован только определенный столбец (только для чтения), а остальные доступны для редактирования,
Я использую следующий подход, но это не работает.
Создайте два CellStyles, один с setLocked (true) и другой с setLocked (false).
Затем примените заблокированный стиль для всех ячеек в столбце, который необходимо заблокировать, и разблокированный стиль для всех остальных ячеек.
Защитите лист, используя sheet.protectSheet("");
Но когда я открываю созданный Excel в открытом офисе, я замечаю, что все ячейки заблокированы!
Ни одно из них не редактируется.
Как я могу достичь вышеуказанного требования?
P.S: Я не могу использовать подход проверки данных.
Ответы
Ответ 1
Если вы делаете наоборот, это работает. Защитите весь лист и вызовите setLocked(false)
для ячеек, которые должны быть доступны для редактирования.
String file = "c:\\poitest.xlsx";
FileOutputStream outputStream = new FileOutputStream(file);
Workbook wb = new XSSFWorkbook();
CellStyle unlockedCellStyle = wb.createCellStyle();
unlockedCellStyle.setLocked(false);
Sheet sheet = wb.createSheet();
sheet.protectSheet("password");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("TEST");
cell.setCellStyle(unlockedCellStyle);
wb.write(outputStream);
outputStream.close();