首页 > 解决方案 > 通过 R 保持保护(或重新保护)导入的 Excel 工作簿的某些列

问题描述

我有一个带有两张工作表的 Excel 工作簿。在第一个工作表上,B 列和 C 列具有防止编辑的公式(指的是第二个仍然为空的工作表)。现在我通过 R 导入了这个工作簿,将我的数据添加到第二张工作表并保存了工作簿。

library(openxlsx)
wb <- loadWorkbook('Tables.xlsx')
writeData(wb, 'Sheet2', mydf)
saveWorkbook(wb, New_tables.xlsx')

但是,保存工作簿后,工作表 1 的 B 列和 C 列不再受到保护。是否可以添加任何特定功能来保护(仅)表 1 中的列 B 和 C 不被编辑?

谢谢!

标签: rexcelopenxlsx

解决方案


有一个protectWorksheet功能可以使用。

您将需要createStyle设置locked = TRUEFALSE然后您可以控制要锁定编辑的列和行。例如:

library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "NEW")
writeData(wb, "NEW", mtcars)
addStyle(wb, "NEW", rows = 1:nrow(mtcars), cols = 1, gridExpand = TRUE, style = createStyle(locked = FALSE))
protectWorksheet(wb, "NEW", protect = TRUE)
saveWorkbook(wb, "New_tables.xlsx", overwrite = TRUE)

这会将第一列锁定到填充数据的行并锁定其他任何地方。


推荐阅读