如何将受密码保护的xlsx
工作簿中的工作表导入R
?
我希望能够将Excel工作表转换为csv
文件,而无需通过Excel本身。
xls工作簿可以使用包xls2csv
中基于perl的函数gdata
。我认为问题是Spreadsheet::XLSX
不支持它。
有许多用于导入非加密xlsx工作簿的函数和包,但似乎都没有解决此问题。
目前似乎唯一的选择是通过Excel或弄清楚如何编写可以执行此操作的perl代码。
答案 0 :(得分:4)
它看起来像你需要的东西,除了它不是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)
答案 1 :(得分:0)
基于ed82的回答,有一些注意事项:
您可能需要传递另一个密码参数 WriteResPassword 。 See docs here
在我习惯了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 = ...)