Linux环境下使用R导入带密码保护的Excel文件求助
在Linux环境下用R导入加密Excel的可行方案
方案1:借助Python的pandas库(通过reticulate调用)
Linux下Python的pandas配合openpyxl可读取加密Excel,通过R的reticulate包调用Python能力实现跨语言操作:
前置依赖安装:
- Linux系统安装Python库:
pip install pandas openpyxl - R中安装
reticulate包:install.packages("reticulate")
- Linux系统安装Python库:
R代码示例:
library(reticulate) # 指定Python路径(可通过`which python3`查看系统Python路径) use_python("/usr/bin/python3") # 调用pandas读取加密Excel pandas <- import("pandas") py_df <- pandas$read_excel( path = "TestWorkbook.xlsx", password = "pass" ) # 转为R数据框 df_r <- as.data.frame(py_df)
方案2:用LibreOffice命令行解密转换
Linux多数发行版预装LibreOffice,可通过命令行先解密加密Excel为普通格式,再用R读取:
- R中调用系统命令完成转换:
# 解密并转为普通xlsx文件 system("libreoffice --headless --convert-to xlsx:Calc_MS_Excel_2007_XML --password=pass TestWorkbook.xlsx") # 读取转换后的文件(注意:若原文件已存在,转换后会生成带后缀的新文件如TestWorkbook_1.xlsx) library(readxl) df <- read_excel("TestWorkbook.xlsx")
方案3:使用XLConnect(依赖Java环境)
XLConnect基于Java实现,支持读取加密Excel,Linux下需先配置Java环境:
前置准备:
- 安装JDK:
sudo apt install default-jdk(Debian/Ubuntu)或对应发行版的Java安装命令 - R中安装包:
install.packages(c("XLConnect", "XLConnectJars"))
- 安装JDK:
R代码示例:
library(XLConnect) # 加载加密工作簿 wb <- loadWorkbook("TestWorkbook.xlsx", password = "pass") # 读取指定工作表数据(sheet可填工作表名或序号) df <- readWorksheet(wb, sheet = 1)
提示:若遇Java内存不足问题,可通过
options(java.parameters = "-Xmx4g")调整Java分配内存。
内容的提问来源于stack exchange,提问作者TobKel
相关产品推荐
相关产品推荐

