Использование saveWorkbook в R - Как мне добавить пароль? - PullRequest
0 голосов
/ 27 июня 2018

Иногда я создаю электронные таблицы Excel в R, используя пакет xlsx (версия 0.6.1), и сохраняю их с помощью функции saveWorkbook. Я пытаюсь защитить файл Excel паролем, добавив переменную password в оператор сохранения, как показано в документации к пакету . Эта попытка приводит меня к следующей ошибке:

#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>

Понятия не имею, что означает эта ошибка. Может кто-нибудь сказать мне, что не так и как это исправить?

1 Ответ

0 голосов
/ 22 сентября 2018

Возможно, этот метод отсутствует в xlsxjars компаньоне. В качестве обходного пути, чтобы установить пароль для книг Excel в R, вы можете использовать пакет 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 задокументировано здесь .

...