R通过download.file下载xlsx后调用read_xlsx报zip无法打开的解决问询
问题修复方案
根因说明
当前使用的是Google Sheets的编辑页面URL,而非xlsx格式的导出直链,下载得到的实际是HTML网页文件,无法被read_xlsx识别,与download.file的写入模式没有关联。
无额外依赖实现代码
仅修改URL为导出格式、添加重定向跟随配置即可,除读取必需的readxl外无额外依赖:
# 提前创建存储目录避免路径不存在报错 if (!dir.exists("./dat")) dir.create("./dat") # 替换为xlsx导出直链,保留原文件ID、工作表gid和资源校验key my_export_url <- "https://docs.google.com/spreadsheets/d/0Bw4a10rhk2QqaTZkUmQwaXU4aEE/export?format=xlsx&gid=1944035140&resourcekey=0-RQa9gRpFX0x3z5bSJGn0Dg" # 配置libcurl方法跟随重定向,wb模式保证二进制文件写入正确 download.file(url = my_export_url, destfile = "./dat/df.xlsx", method = "libcurl", mode = "wb") # 读取文件 library(readxl) df <- read_xlsx("./dat/df.xlsx")
注意事项
- 若表格为非公开资源,需要先将表格权限设置为「知道链接的所有人可查看」才能正常导出
- 若需要读取私有表格且不愿公开权限,可引入轻量包
googlesheets4完成身份验证后直接读取,无需手动下载文件
内容的提问来源于stack exchange,提问作者Arturo Sbr
相关产品推荐
相关产品推荐

