在不安装 Java 的情况下将受密码保护的 xlsx 文件读入 R(密码已知)
Posted
技术标签:
【中文标题】在不安装 Java 的情况下将受密码保护的 xlsx 文件读入 R(密码已知)【英文标题】:Reading a password-protected xlsx-file into R without installing Java (password is known) 【发布时间】:2021-05-11 21:26:20 【问题描述】:目前我正在为一位客户准备 R 课程。我们想从受密码保护的 xlsx 文件中读取数据。因此,我试图将这个受密码保护的 xlsx 文件读入 R (取消保护文件本身不是解决方案)。不幸的是,我不能使用包括安装附加软件的方法,例如 Java。
openxlsx、readr 和 readxl 似乎都不支持在读取 excel 文件时使用密码。
似乎有两个软件包支持这一点:xlsx 和 excel.link 我已经尝试过 xlsx 包,但它需要 Java。 XLConnect
也是如此我已经尝试过 excel.link 包,但每次我尝试打开文件时它都会崩溃(“R 会话中止”)。 RDCOMClient也是如此。
不幸的是,*** 帖子不适合我的问题:
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,但不能两者兼有。 【参考方案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()
【讨论】:
以上是关于在不安装 Java 的情况下将受密码保护的 xlsx 文件读入 R(密码已知)的主要内容,如果未能解决你的问题,请参考以下文章
如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?
在不安装 Xcode 的情况下将 GCC 安装到 Mac OS X Leopard
如何在不泄露敏感信息的情况下将 Node-Red 推送到 GitHub?
在不安装 Ghostscript 的情况下将 PDF 文档转换为 PHP 中的预览图像