如何将外部网站的Excel数据导入R工作平台
R导入网络端Excel/压缩包内Excel数据操作指引
你给的测试链接是zip压缩包格式(内部存储Excel文件),整体操作逻辑是:临时下载网络文件到本地缓存,解压后读取Excel内容,全程不会在工作目录留存冗余文件。
操作步骤
- 首次使用先安装依赖包
# 首次运行执行即可,后续使用不用重复安装 install.packages(c("readxl", "curl"))
readxl是R生态里最稳定的Excel读取包,不需要依赖java等外部环境curl用来处理HTTPS协议的文件下载,比R自带下载函数兼容性好,不容易出现下载截断、乱码问题针对测试链接的可直接运行代码
# 加载依赖包 library(readxl) library(curl) # 填入目标文件URL target_url <- "https://www.contextures.com/tablesamples/sampledatahockey.zip" # 创建临时文件、临时目录,用来缓存下载的压缩包和解压内容 temp_zip <- tempfile(fileext = ".zip") temp_cache_dir <- tempdir() # 下载压缩包到临时缓存 curl_download(url = target_url, destfile = temp_zip) # 查看压缩包内的文件列表,确认目标Excel的文件名 zip_content <- unzip(zipfile = temp_zip, list = TRUE) print(zip_content$Name) # 测试链接的压缩包内文件为 sampledatahockey.xlsx # 解压压缩包到临时缓存目录 unzip(zipfile = temp_zip, exdir = temp_cache_dir) # 拼接Excel完整路径,读取数据 excel_file_path <- file.path(temp_cache_dir, "sampledatahockey.xlsx") hockey_data <- read_excel(path = excel_file_path) # 验证读取结果,输出前6行数据 head(hockey_data)
直链Excel(非压缩包)简化读取方法
如果你的目标链接是直接指向.xlsx/.xls文件的直链(URL后缀直接带Excel格式,点开即触发下载),不需要解压步骤,直接用以下代码即可:
library(readxl) library(curl) target_excel_url <- "替换为你的直链Excel地址" temp_xlsx <- tempfile(fileext = ".xlsx") curl_download(url = target_excel_url, destfile = temp_xlsx) my_data <- read_excel(temp_xlsx)
常见踩坑提示
- 不要直接把网络URL传入
read_excel(),该函数不支持直接读取网络路径,必须先下载到本地 - 非直链地址(比如需要登录、跳转、验证的网盘/网页链接)无法直接用该方法读取,需要先获取文件的真实下载直链
- 若Excel包含多个工作表,在
read_excel()中传入sheet = "工作表名"或sheet = 序号即可指定读取目标 - 出现下载报错时,先确认浏览器可正常访问该URL下载文件,同时检查防火墙是否拦截了R的网络请求
内容的提问来源于stack exchange,提问作者GSL
相关产品推荐
相关产品推荐

