将受密码保护的XLSX工作簿导入到R中



如何将工作表从密码保护的xlsx工作簿导入到R

我希望能够将Excel工作表转换为csv文件,而无需通过Excel本身。

使用基于Perl的函数xls2csv从软件包gdata使用XLS工作簿。我认为问题是Spreadsheet::XLSX不支持它。

有多种功能和软件包用于导入未加密的XLSX工作簿,但似乎没有一个解决这个问题。

目前似乎唯一的选择是通过Excel或弄清楚如何编写可以做到的Perl代码。

它看起来是您需要的,除了它不适合xlsx软件包:

https://stat.ethz.ch/pipermail/r-help/2011-march/273678.html

library(RDCOMClient)
eApp <-  COMCreate("Excel.Application")
wk <-  eApp$Workbooks()$Open(Filename="your_file",Password="your_password")
tf <-  tempfile()
wk$Sheets(1)$SaveAs(tf, 3)

要在ED82的答案上构建,有一些警告:

  1. 您可能需要传递另一个密码参数, writerespassword 。请参阅此处的文档

  2. 我习惯了XLSX R软件包后没有发现学习com接口。因此,我宁愿在没有密码的情况下保存一个受保护的Excel文件的副本,将其关闭,然后使用另一个软件包阅读:

eApp <- COMCreate("Excel.Application")
# Find out whether you need to pass **Password** or **WriteResPassword**
wk <- eApp$Workbooks()$Open(Filename= filename, Password="somepass",                             WriteResPassword = "somepass")
# Save a copy, clear the password (otherwise copy is still pass-protected)
wk$SaveAs(Filename = '...somepath...', WriteResPassword = '', Password = '')
# The copied file is still open by COM, so close it
wk$Close(SaveChanges = F)
# Now read into data.frame using a familiar package {xlsx}
my.data <- raed.xlsx('...somepath...', sheetIndex = ...)

最新更新