readxl :: read_xls返回“ libxls错误:无法打开文件”

问题描述 投票:0回答:2

我有多个.xls(〜100MB)文件,我希望从中将多个工作表(来自每个工作表)作为数据帧加载到R中。我尝试了各种功能,例如xlsx::xlsx2XLConnect::readWorksheetFromFile,这两个功能始终运行很长时间(> 15分钟),并且从未完成,因此必须强制退出RStudio才能继续工作。

我也尝试过gdata::read.xls,它确实完成了,但是每张纸要花费3分钟以上的时间,并且它不能像XLConnect::loadWorkbook一样一次提取多张纸(这对加快我的流程非常有帮助。) >

执行这些函数所花的时间(而且我什至不确定如果让它们运行更长的时间,前两个函数是否会完成)对于我的管道来说太长了,我需要一次处理多个文件。有没有办法让它们更快地完成/完成?

[在很多地方,我看到了使用功能readxl::read_xls的建议,该功能似乎被广泛推荐用于此任务,并且每张纸应该更快。但是,这给了我一个错误:

> # Minimal reproducible example:
> setwd("/Users/USER/Desktop")
> library(readxl)
> data <- read_xls(path="test_file.xls")
Error: 
  filepath: /Users/USER/Desktop/test_file.xls
  libxls error: Unable to open file

我还进行了一些基本测试,以确保文件存在并且格式正确:

> # Testing existence & format of the file
> file.exists("test_file.xls")
[1] TRUE
> format_from_ext("test_file.xls")
[1] "xls"
> format_from_signature("test_file.xls")
[1] "xls"

以上使用的test_file.xls可用于here。任何建议都会使第一个功能运行得更快或read_xls完全运行-谢谢!

更新:

[似乎某些用户可以使用readxl::read_xls功能打开上面的文件,而其他用户则不能使用Mac OS和Windows使用最新版本的RRstudio和[ C0]。 readxl尚未解决。

我有多个.xls(〜100MB)文件,我希望从中将多个工作表(来自每个工作表)作为数据帧加载到R中。我尝试了各种功能,例如xlsx :: xlsx2和XLConnect :: ......>

r excel macos xls readxl
2个回答
2
投票

我下载了您的数据集并以这种方式读取了每个Excel工作表(例如,工作表“总体”和“区域”):

issue has been posted on the readxl GitHub

0
投票

我将提出不同的工作流程。如果您恰好安装了LibreOffice,则可以通过编程将excel文件转换为csv。我有Linux,所以我可以在bash中进行操作,但是我确信它可以在macOS中使用。

© www.soinside.com 2019 - 2024. All rights reserved.