我正在使用带有readxl
包的R。我尝试使用以下命令导入 Excel 文件:
library(readxl)
city_codes <- read_excel("./data/file.xlsx", sheet = "city_codes")
它说这是一个 zip 文件,无法打开:
Error in sheets_fun(path) : Evaluation error: zip file './data/file.xlsx' cannot be opened.
有任何想法吗?
我遇到了这个错误,但对我来说,只是我在尝试将其读入 R 时在 Excel 中打开了工作表。我猜包在 Excel 拥有部分所有权时尝试读取它时错误地将其视为 zip 文件它(这会阻止读取)。
错误消息是readxl
说“找不到文件”的有趣方式。那行确切的代码给了我完全相同的错误,而且该文件甚至对我来说都不存在。
注意: 我使用的是 1.0.0 版readxl
您可以指定文件的路径,前提是它嵌套在工作目录中。例如:如果您的工作目录是 MyWD,并且其中有一个文件夹,名为 MyData,MyData 中的另一个文件夹名为 MyNestedData,最后是 myExcelFile.xlsx
read_excel("MyData/MyNestedData/myExcelFile.xlsx",sheet = "Sheet2") #will work
read_excel("MyWD/MyData/MyNestedData/myExcelFile.xlsx",sheet = "Sheet2") #will not work
对我来说,当 Excel 电子表格仍在 MSExcel 中打开时,也会出现“评估错误:zip 文件”错误消息。
如果您的 excel 工作表受密码保护,read_excel 将无法访问它并会给您此错误。如果它需要保护,我建议 p/w 保护它所在的文件夹,然后取消保护工作表。
如果您使用了错误的读取功能,您也可能会收到此错误。
例如,read_xlsx("file.xls" ...)
会抛出错误。
如果您在公司的计算机上工作,请尝试更改文件限制。这对我来说解决了这个问题。
如果您在使用 read_excel 函数之前忘记执行以下操作,可能会发生这种情况
setwd("C:\\map\\map_in_map\\map_in_map_in_map_where_the_file_is")
您可以尝试指定完整路径而不是./path/to/file
尝试制作一个新文件。单击“另存为”并命名。再次运行您的代码。对我来说效果很好:)
在我的情况下,xlsx 是使用 Excel 2007 创建的,这导致了这个问题。来自较新 Excel 版本的 Xlsx 文件有效。
就我而言,尽管我已将其删除,但该文件在目录中不可见。我不得不使用名为“Everyting”的软件搜索该文件,然后将其删除。之后它起作用了。
问题是我的工作目录中有隐藏文件。我将它们复制到外部并排除所有目录。现在,当我运行代码时它可以工作。
对我来说,我正在将 Google Drive 中的文件下载到扩展名为 .xlsx 的临时文件中......意识到 Google Drive 中的文件是 .xls,所以我将其更改为该文件并且它有效。不过这种情况很少见。
虽然已经给出了解决方案,但为了记录,我将把我的情况留在这里:
我遇到了同样的问题,不知道为什么。似乎我的 excel 文件因错误或类似原因而关闭。我不得不打开excel文件,然后再次保存。当我运行 R 时,一切都很顺利。