【问题标题】:Openxlsx protect sheet but allow entering of valuesOpenxlsx 保护工作表但允许输入值
【发布时间】:2019-05-09 22:15:10
【问题描述】:

我正在使用 excel 模板从不同的人那里收集数据。为了尽量减少人们更改模板结构的机会,我想保护工作表,但仍允许他们填写我想要的数据值。

我很高兴我找到了一个分叉版本的 openxlsx 包,其中包含一个函数 protectWorksheet 来执行此操作,Link。但是当我使用该功能时,我无法调整该功能以便仍然可以填充值。

除了help file 示例中的函数之外,我真的没有 MWE。如何调整示例以仍然允许填写值?有可能吗?

wb <- createWorkbook()
addWorksheet(wb, "S1")
writeDataTable(wb, 1, x = iris[1:30,])
# Formatting cells / columns is allowed , but inserting / deleting columns is protected:
protectWorksheet(wb, "S1", protect = TRUE, lockFormattingCells = FALSE, lockFormattingColumns = FALSE, lockInsertingColumns = TRUE, lockDeletingColumns = TRUE)

saveWorkbook(wb, "pageSetupExample.xlsx", overwrite = TRUE)

【问题讨论】:

    标签: r excel openxlsx


    【解决方案1】:

    感谢@Reinhold Kainhofer,您可以使用createStyle 进行控制。

    从github下载openxlsx包:https://github.com/kainhofer/openxlsx。

    wb <- createWorkbook()
    addWorksheet(wb, "S1")
    writeDataTable(wb, 1, x = iris[1:30,])
    # Formatting cells / columns is allowed , but inserting / deleting columns is protected:
    protectWorksheet(wb, "S1", protect = TRUE, lockFormattingCells = FALSE, lockFormattingColumns = FALSE, lockInsertingColumns = TRUE, lockDeletingColumns = TRUE)
    
    #This line allows specified cells to be unlocked so that users can enter values.
    addStyle(wb, "S1", style = createStyle(locked = FALSE), rows = 1:10, cols = 1)
    
    saveWorkbook(wb, "pageSetupExample.xlsx", overwrite = TRUE)
    

    【讨论】:

    • 太棒了。我必须在家里试试这个,因为它不能在我的办公电脑上工作。但确实要感谢 Reinhold Kainhofer
    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 2019-03-23
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多