Perl 将受密码保护的xlsx工作簿导入R
如何将受密码保护的Perl 将受密码保护的xlsx工作簿导入R,perl,r,gdata,xlsx,Perl,R,Gdata,Xlsx,如何将受密码保护的xlsx工作簿中的工作表导入R 我希望能够将Excel工作表转换为csv文件,而无需查看Excel本身 xls工作簿可以使用包gdata中基于perl的函数xls2csv。我推测问题在于电子表格::XLSX不支持它 有各种各样的函数和软件包可用于导入未加密的xlsx工作簿,但似乎都无法解决此问题 目前,唯一的选择似乎是通过Excel或找出如何编写perl代码来完成这项工作。这似乎是您所需要的,但xlsx软件包中没有: 库(RDCOMClient) eApp根据ed82的答案,
xlsx
工作簿中的工作表导入R
我希望能够将Excel工作表转换为csv
文件,而无需查看Excel本身
xls工作簿可以使用包gdata
中基于perl的函数xls2csv
。我推测问题在于电子表格::XLSX
不支持它
有各种各样的函数和软件包可用于导入未加密的xlsx工作簿,但似乎都无法解决此问题
目前,唯一的选择似乎是通过Excel或找出如何编写perl代码来完成这项工作。这似乎是您所需要的,但xlsx软件包中没有:
库(RDCOMClient)
eApp根据ed82的答案,有几个注意事项:
您可能需要传递另一个密码参数,WriteResPassword
在我习惯了xlsx R软件包之后,我觉得学习COM接口并没有什么吸引力。因此,我宁愿不使用密码立即保存受保护Excel文件的副本,将其关闭,然后用另一个包将其读入:
eApp
library(RDCOMClient)
eApp <- COMCreate("Excel.Application")
wk <- eApp$Workbooks()$Open(Filename="your_file",Password="your_password")
tf <- tempfile()
wk$Sheets(1)$SaveAs(tf, 3)
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 = ...)