【问题标题】:xlsx file downloaded by download.file does not opendownload.file 下载的 xlsx 文件无法打开
【发布时间】:2020-06-21 02:55:54
【问题描述】:

我正在尝试使用 download.file 下载一个 xlsx 文件(该文件恰好位于 Teams 链接上),当我尝试查看该文件(在 R 中或只是双击Windows 资源管理器中的文件)失败。

然后我在 Dropbox 链接上对其进行了测试,但同样失败了(代码如下)。不知道为什么,但我尝试过不使用显式模式和使用 mode="wb"。

示例代码:

download.file(
    url = "https://www.dropbox.com/s/9bumheqlbpxygnl/testfile.xlsx?dl=0", 
    destfile = "test.xlsx",
    mode="wb"
)   

读取下载文件时出错:

> readxl::read_xlsx("test.xlsx")
Error: Evaluation error: zip file 'C:\Users\tam2\Dropbox\Trabalho\CEAUL\COVID19\Projetos\COVIDETECT\dados\test.xlsx' cannot be opened.

有人可以帮助我了解可能发生的情况吗?我在 StackOverflow 上看到其他人通过使用 mode="wb" 解决了他们的问题,但这在这里没有影响(在任何一种模式下都不起作用)。

上面的链接确实有一个文件用于测试,以防你想使用它。非常感谢

我还尝试了在这里找到的变体

Error downloading and reading Excel file from URL in R

基于

library(httr)
GET("https://www.dropbox.com/s/9bumheqlbpxygnl/testfile.xlsx?dl=0", write_disk(tf <- tempfile(fileext = ".xls")))
data <- read_excel(tf)

但又撞到了石墙

Error: 
  filepath: C:\Users\tam2\AppData\Local\Temp\RtmpCA2uEa\file31802e134f09.xls
  libxls error: Unable to open file
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

【问题讨论】:

  • 您将文件下载到您当时的工作目录中,但我猜不是您认为的那个。使用‘getwd()’
  • 我认为你的网址有误;这是指向有关文件的 Dropbox 页面的链接,而不是文件本身的链接。
  • 我认为本地路径不是问题,我实际上指向了正确的路径,而 read_xlsx 只是无法处理该文件 - 可能是因为@alistaire 是正确的(它不是一个 excel已下载的文件,因此它不会识别它,即使它被称为正确的东西,因为文件的名称是正确的)。我不知道 dl=0 和 dl=1 在 dropbox 中的区别。

标签: r excel download xlsx


【解决方案1】:

这两个问题都解决了我电脑上的问题。

url <- "https://www.dropbox.com/s/9bumheqlbpxygnl/testfile.xlsx?dl=1"
fn <- tempfile(fileext=".xlsx")
download.file(url, destfile=fn, mode="wb")
library(readxl)
dat <- read_excel(fn)
str(dat)

请注意,网址已更改为dl=1,并且提供了download.fileread_excel 的完整路径。似乎download.file 至少在我的 Windows 电脑上默认写入 ~/Downloads 文件夹。

另一种方法也适用:

library(httr)
GET(url, write_disk(fn, overwrite=TRUE))
dat <- read_excel(fn)

请注意,data 也是一个基本 R 函数,因此使用该名称命名变量不是一个好主意。

【讨论】:

  • 非常感谢,dl=1 vs dl=0 解决了它。我没有意识到这种差异。 “dl=0”版本是我通过“复制 drobox 链接”在 Dropbox 中得到的。不幸的是,我怀疑这意味着我在 Teams 中获得的链接(这是我的测试文件,真正的文件在 Teams 中)执行类似操作也指向的不是文件本身,而是关于文件的文件,所以现在我需要找到了解如何将 Teams 提供的链接更改为实际文件链接...任何人都知道我在哪里可以找到相关信息(感谢 dat 与数据提示!)。
猜你喜欢
  • 2019-10-06
  • 2019-01-27
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多