Защитите отдельные ячейки Excel паролем в R с сохранением форматирования

Из отформатированного шаблона Excel, который я заполняю данными с помощью циклов в R (используя пакет XLConnect), получаются многочисленные файлы Excel. Теперь я хочу защитить паролем содержимое определенных ячеек листа для всех сгенерированных файлов, при этом исходное форматирование (шрифты, цвета заголовков, границы и т. д.) сохраняется.

Решение в Как сохранить Excel файл и включить защиту ячеек в R? мне уже очень помогло. Я попытался перечитать файлы Excel, созданные с помощью XLConnect (с этим пакетом, защищающим отдельные ячейки, кажется, невозможным) с помощью xlsx-пакета и защитить соответствующие ячейки:

x <- loadWorkbook(file)
cs <- CellStyle(x, cellProtection = CellProtection(locked=F)) 
rows <- getRows(x$getSheet("Sheet Name"), rowIndex=17:100)
cells <- getCells(rows, colIndex = c(4:26)) 
lapply(names(cells), function(ii)setCellStyle(cells[[ii]],cs)) 
.jcall(x$getSheet("Sheet Name"),"V","protectSheet", "Password")
saveWorkbook(x, newfile)

Защита отдельных ячеек будет работать таким образом, но, к сожалению, все форматирование нарушено из-за новых стилей ячеек. Кто-нибудь видит возможность защиты отдельных ячеек без использования setCellStyle? Заранее благодарю за полезные ответы.


person MaVe    schedule 04.01.2021    source источник