R语言加载xlsx包报错及Excel数据导出问题求助
嘿,我来帮你拆解下这个问题的核心原因,再给你几个可行的解决办法:
问题核心原因
从报错信息能明确看出来,rJava包加载失败是根源——它找不到指定路径/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/lib/server/libjvm.dylib下的共享库文件。具体可能有这几个原因:
- 你系统里根本没安装JDK 11.0.1,或者这个版本的JDK已经被卸载/移动了位置;
- R 3.6版本属于比较旧的版本,和JDK 11这类高版本Java的兼容性不太好,容易出现路径绑定错误;
- 当初安装rJava的时候,系统的Java环境还没配置到位,导致rJava绑定了一个不存在的Java路径。
可行的解决步骤
1. 先确认系统的Java环境
打开终端,输入下面两个命令,检查是否安装了完整的JDK(不是只装JRE):
java -version javac -version
如果没安装,建议安装和R 3.6兼容的JDK 8(这个版本和旧版R的适配性最好)。安装完成后,输入/usr/libexec/java_home可以得到Java的安装路径,把这个路径记下来。
2. 给R指定正确的Java路径
打开R/RStudio,运行下面的代码(把路径替换成你刚才得到的Java路径):
Sys.setenv(JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_xxx.jdk/Contents/Home')
然后重新尝试加载包:
library(rJava) library(xlsx)
3. 重新安装rJava包
如果上面的方法没效果,先卸载rJava再重新安装,确保安装时绑定正确的Java路径:
remove.packages("rJava") install.packages("rJava", type = "source")
安装完成后再测试加载。
4. 换个更省心的替代方案
要是折腾rJava太麻烦,推荐用openxlsx包——它不需要依赖rJava,用法和xlsx几乎一致,还更轻量。调整你的代码如下:
# 先安装加载包 install.packages("openxlsx") library(openxlsx) # 写入Excel(注意参数名略有调整) write.xlsx(aa, "Database.xlsx", sheet = "Sheet1", colNames = TRUE, rowNames = TRUE, append = TRUE, showNA = TRUE) write.xlsx(ab, "Database.xlsx", sheet = "Sheet1", colNames = TRUE, rowNames = TRUE, append = TRUE, showNA = TRUE) write.xlsx(ha, "Database.xlsx", sheet = "Sheet1", colNames = TRUE, rowNames = TRUE, append = TRUE, showNA = TRUE) write.xlsx(hb, "Database.xlsx", sheet = "Sheet1", colNames = TRUE, rowNames = TRUE, append = TRUE, showNA = TRUE)
注意openxlsx里的参数是sheet(不是sheetName)、colNames(不是col.names),稍微改下参数名就能用啦。
内容的提问来源于stack exchange,提问作者jholmes
相关产品推荐
相关产品推荐

