【问题标题】:Reading a password-protected xlsx-file into R without installing Java (password is known)在不安装 Java 的情况下将受密码保护的 xlsx 文件读入 R(密码已知)
【发布时间】:2021-05-11 21:26:20
【问题描述】:

目前我正在为一位客户准备 R 课程。我们想从受密码保护的 xlsx 文件中读取数据。因此,我试图将这个受密码保护的 xlsx 文件读入 R (取消保护文件本身不是解决方案)。不幸的是,我不能使用包括安装附加软件的方法,例如 Java。

openxlsxreadrreadxl 似乎都不支持在读取 excel 文件时使用密码。

似乎有两个软件包支持这一点:xlsxexcel.link 我已经尝试过 xlsx 包,但它需要 Java。 XLConnect

也是如此

我已经尝试过 excel.link 包,但每次我尝试打开文件时它都会崩溃(“R 会话中止”)。 RDCOMClient也是如此。

不幸的是,Stackoverflow 帖子不适合我的问题:

How do you read a password protected excel file into r?

How to read an .xls file that is encrypted with R?

Import password-protected xlsx workbook into R

Reading Any kind of password protected file into R

How to read an .xls file that is encrypted with R?

在遇到这些问题后,我刚刚更新了我所有的包。这是关于我的 R 版本的信息。

 version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          4                           
minor          0.3                         
year           2020                        
month          10                          
day            10                          
svn rev        79318                       
language       R                           
version.string R version 4.0.3 (2020-10-10)
nickname       Bunny-Wunnies Freak Out     

您知道其他适合我需要的软件包吗?您是否也知道为什么 excel.link 和 RODCOMClient 似乎根本不起作用?

非常感谢您的任何建议!

【问题讨论】:

  • 您无法在 Excel 中打开文件,然后将数据复制/粘贴到新文件中?
  • 对不起,如果我没有清楚地表达自己的意思:我确实有密码,我可以撤消密码保护。但解决方案的一部分需要是原始文件始终保持密码保护(我们可能会问这是否有意义,但无论如何我需要解决方案)。
  • feature request for readxl 的讨论(已关闭,未实现)很有趣 - 因为 Excel 会加密文件,似乎获取它的方法非常有限。要么是来自 MS 的 C++ v 11 包,要么是让 Excel 来做(可能是需要 Java 的包使用的方法......)。
  • 我很想弄错,但在这一点上听起来有一些方法可以将受密码保护的 Excel 文件读入依赖 Java 的 R 中,并且有一些方法可以将 Excel 文件读入 R没有 Java,但不能两者兼有。

标签: r excel readxl openxlsx rdcomclient


【解决方案1】:

我已经能够使用以下代码使用 RDCOMClient 打开受密码保护的 Excel 文件:

library(RDCOMClient)
xlApp <- COMCreate("Excel.Application")
xlWbk1 <- xlApp$Workbooks()$Open("C:\\..\\Test.xlsx", Password = "my_Password")
xlWbk1$sheets(1)$cells(8,3)$value()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2012-12-09
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多