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 = ...)