如何将一个有密码保护的excel文件读入r?我试过excel.link,但它不适用于R版本3.2.3(我的版本)我也尝试过RDCOMClient,但它也不适用于R版本3.2.3
6jjcrrmo1#
我刚刚使用了excel.link包中的xl.read.file。https://rdrr.io/cran/excel.link/man/xl.read.file.html很简单。使用与上一个答案相同的测试文件(https://github.com/miraisolutions/xlconnect/files/794219/TestWorkbook.xlsx)。
excel.link
xl.read.file
install.packages("excel.link") library("excel.link") dat <- xl.read.file("TestWorkbook.xlsx", password = "pass", write.res.password="pass") dat
(The我需要的一个文件只有一个密码,这与测试文件不同,因此我不需要最后一个参数。)
zf9nrax12#
XLConnect(0.2-13)现在可以读取密码保护的excel文件安装最新版本的XLConnect和XLConnectJars(0.2-13)
install.packages("XLConnect")
安装无限强度Java(TM)加密扩展策略文件(在OS X和Windows上是必需的-在带有OpenJDK 1.8的Ubuntu Linux上不需要)http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.htmlHow to install unlimited strength JCE for Java 8 in OS X?
library(XLConnect)
使用test file:
wb <- loadWorkbook("TestWorkbook.xlsx", password="pass") test <- readWorksheet(wb, "sheet1") > data id value1 value2 1 1 1 5 2 2 2 4 3 3 3 3 4 4 4 2 5 5 5 1
gdx19jrr3#
综合前面的答案:我也想这样做,发现excel.link包在今天的最新R版本中有问题,使R崩溃。XLConnect可能会工作,但它会因为需要额外安装而变得复杂,否则可能对您来说是不必要的。我发现xlsx::read.xlsx()有一个password参数,它在我的情况下工作得很好。对我来说,这是最实用的解决方案。
XLConnect
xlsx::read.xlsx()
password
pxy2qtax4#
根据Chris Andrew的回答,为了避免在代码中写入密码,还可以添加askForPassword函数,这样在运行代码时会给予一个窗口,要求您输入密码。
askForPassword
install.packages("excel.link") install.packages("rstudioapi") library("excel.link") pw_message <- "Input password for excel sheet." dat <- xl.read.file("TestWorkbook.xlsx", password = rstudioapi::askForPassword(pw_message)) dat
pdsfdshx5#
我知道这是一个较老的线程,但我想我会在这里添加它,以防它有用。我一直在将一个Excel文件读入一个Shiny应用程序,发现就我的目的而言,xlsx::read.xlsx()远比excel.link::xl.read.file()慢。但是,使用excel.link时,我注意到关闭应用程序不会关闭关联的Excel进程,而xlsx会关闭。使用excel.link时,必须包含system("TASKKILL /F /IM EXCEL.exe"),以强制Excel在读取文件后退出。
excel.link::xl.read.file()
system("TASKKILL /F /IM EXCEL.exe")
5条答案
按热度按时间6jjcrrmo1#
我刚刚使用了
excel.link
包中的xl.read.file
。https://rdrr.io/cran/excel.link/man/xl.read.file.html
很简单。
使用与上一个答案相同的测试文件(https://github.com/miraisolutions/xlconnect/files/794219/TestWorkbook.xlsx)。
(The我需要的一个文件只有一个密码,这与测试文件不同,因此我不需要最后一个参数。)
zf9nrax12#
XLConnect(0.2-13)现在可以读取密码保护的excel文件
安装最新版本的XLConnect和XLConnectJars(0.2-13)
安装无限强度Java(TM)加密扩展策略文件(在OS X和Windows上是必需的-在带有OpenJDK 1.8的Ubuntu Linux上不需要)
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
How to install unlimited strength JCE for Java 8 in OS X?
使用test file:
gdx19jrr3#
综合前面的答案:我也想这样做,发现
excel.link
包在今天的最新R版本中有问题,使R崩溃。XLConnect
可能会工作,但它会因为需要额外安装而变得复杂,否则可能对您来说是不必要的。我发现
xlsx::read.xlsx()
有一个password
参数,它在我的情况下工作得很好。对我来说,这是最实用的解决方案。pxy2qtax4#
根据Chris Andrew的回答,为了避免在代码中写入密码,还可以添加
askForPassword
函数,这样在运行代码时会给予一个窗口,要求您输入密码。pdsfdshx5#
我知道这是一个较老的线程,但我想我会在这里添加它,以防它有用。
我一直在将一个Excel文件读入一个Shiny应用程序,发现就我的目的而言,
xlsx::read.xlsx()
远比excel.link::xl.read.file()
慢。但是,使用excel.link时,我注意到关闭应用程序不会关闭关联的Excel进程,而xlsx会关闭。
使用excel.link时,必须包含
system("TASKKILL /F /IM EXCEL.exe")
,以强制Excel在读取文件后退出。