You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用xlsx包读取网络xlsx文件运行报错问题求助

报错原因排查

  • 第一个报错原因:xlsx包的read.xlsx接口仅支持读取本地存储的Excel文件,无法直接解析HTTPS网络链接指向的远程文件,因此直接传入URL会提示文件不存在。
  • 第二个报错原因:使用download.file下载时没有指定二进制写入模式,Windows环境下默认以文本模式下载二进制的xlsx文件会导致文件损坏,下载得到的临时文件不是合法的Excel格式,因此解析时抛出格式不识别的错误;同时xlsx包依赖Java环境,环境配置不匹配也容易触发各类底层调用错误。

可行解决方案

方案1:修复原有代码逻辑

在download.file参数中添加mode = "wb"指定二进制写入模式,即可解决文件损坏问题:

library(xlsx)
l <- "https://www.rbnz.govt.nz/-/media/ReserveBank/Files/Statistics/tables/b2/hb2-daily.xlsx"
options(java.parameters = "-Xmx1000m")

tmp <- tempfile(fileext = ".xlsx")
# 增加mode="wb"参数指定二进制下载,避免文件损坏
download.file(l, destfile=tmp, method="curl", mode = "wb")
rbnz.rates <- read.xlsx(file = tmp, sheetName = "Data", startRow = 5)
unlink(tmp)

方案2:使用无Java依赖的包(更稳定,推荐)

换用不需要Java环境的openxlsx包读取,可彻底避免Java环境配置引发的各类问题:

# 首次使用需先安装包:install.packages("openxlsx")
library(openxlsx)
l <- "https://www.rbnz.govt.nz/-/media/ReserveBank/Files/Statistics/tables/b2/hb2-daily.xlsx"

tmp <- tempfile(fileext = ".xlsx")
download.file(l, destfile=tmp, mode = "wb")
rbnz.rates <- read.xlsx(tmp, sheet = "Data", startRow = 5)
unlink(tmp)

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:18:03