首页 > 解决方案 > 在 R 中使用 saveWorkbook - 如何添加密码?

问题描述

xlsx我有时使用包(版本 0.6.1)在 R 中创建 Excel 电子表格,并使用saveWorkbook函数保存这些电子表格。我正在尝试通过password在保存语句中添加一个变量来对 Excel 文件进行密码保护,如包文档中所示。这种尝试导致我出现以下错误:

#The object WB is a workbook created with the xlsx pacakage

> saveWorkbook(WB, "MyFile.xlsx", password = "PASS");
Error in .jnew("org/apache/poi/poifs/crypt/EncryptionInfo", encMode) : 
  java.lang.NoSuchMethodError: <init>

我不知道这个错误是什么意思。谁能告诉我出了什么问题以及如何解决这个问题?

标签: rpasswordsxlsx

解决方案


xlsxjars也许同伴中缺少该方法。作为解决方法,要在 R 中的 Excel 工作簿上设置密码,您可以使用该RDCOMClient包,例如:

# devtools::install_github("omegahat/RDCOMClient")
set_excel_psw <- function(filename, password = rstudioapi::askForPassword()) {
  require(RDCOMClient)
  filename <- normalizePath(path.expand(filename))
  Application <- COMCreate("Excel.Application")
  wkb <- Application$Workbooks()$Open(filename) 
  wkb[['Password']] <- password
  wkb$Save()
  Application$Quit()
  Application <- NULL    
  invisible(gc())
}

xlsx::write.xlsx(iris, tf<-tempfile(fileext = ".xlsx"))
set_excel_psw(filename = tf, password = "foo")
shell.exec(tf)

此处记录了Password属性。


推荐阅读