【问题标题】:Reading .xls-file in R在 R 中读取 .xls 文件
【发布时间】:2020-07-31 15:47:04
【问题描述】:

我正在尝试将 .xls 文件读入 R 数据帧。我试过了:

library(readxl)
dfTest <- readxl::read_excel("file_path/file.xls")

这给了我:

Error: 
filepath: file_path/file.xls
libxls error: Unable to open file

接下来我尝试了:

library(xlsx)
dfTest <- xlsx::read.xlsx("file_path/file.xls",1)

结果:

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.io.IOException: block[ 1462 ] already removed - does your POIFS have circular or duplicate block references? 

我试过了:

library(openxlsx)
dfTest <- openxlsx::read.xlsx("file_path/file.xls")

结果:

Error in read.xlsx.default("file_path/file.xls") : 
  openxlsx can not read .xls or .xlm files!

我尝试的最后一件事是:

library(RODBC)
conn <- odbcConnectExcel("file_path/file.xls")

这给了我:

Error in odbcConnectExcel("file_path/file.xls") : 
  odbcConnectExcel is only usable with 32-bit Windows

有人知道如何读取 Excel 文件吗?将文件保存为 .csv 文件并将其加载到 R 中工作得很好。但是,我有大量文件最终想要循环读取和处理。至少可以说,手动将所有内容保存为 .csv 很麻烦。 我在更改正在使用的计算机上的软件安装时受到限制。

【问题讨论】:

  • 这有点像在黑暗中拍摄,但您是否尝试过将odbcConnectExcel 与 32 位 R 一起使用?我知道在使用 RODBC 连接到 32 位 MS Access 数据库时我必须这样做。
  • 我想过,但有没有办法在不改变我的安装的情况下使用 32 位 R?我正在使用的计算机上没有管理员权限...
  • 只要安装好了(我认为默认的 R 安装会同时安装 32 位和 64 位版本),您应该可以安装。我能够在我处于相同情况的工作计算机上执行此操作。对于 RStudio,工具 -> 全局选项 -> 常规应该允许您切换正在使用的版本。您必须重新启动 RStudio 才能使其生效(稍后再切换回来)。我使用这种方法进行开发,然后切换到一个批处理文件,然后我只指定了 32 位 Rscript 可执行文件 C:\Program Files\R\R-4.0.0\bin\i386\Rscript myScript.R 的路径
  • 不幸的是对我不起作用。我只安装了 64 位版本而没有安装 32 位版本,我无法轻松/快速地更改安装(工作计算机)。我通过在 VBA 中使用将所有 .xls 文件转换为 .csv 文件的宏重新解决了这个问题。 .csv 文件读入 R 没有问题。无论如何,我仍然保留这个问题。也许有人有一个想法,也许这对其他人有用。我想 .xls 文件的编码有些奇怪......

标签: r excel xlsx readxl openxlsx


【解决方案1】:

我相信 readr 包中的 .xls 文件 read_delim 应该可以工作。

例如:

readr::read_delim("file_path/file.xls",as.is=TRUE)

【讨论】:

  • 谢谢,它做了一些事情(顺便说一句,read.delim 不是来自 readr 而是来自 utils)。我收到警告消息Warning message: In read.table(file = file, header = header, sep = sep, quote = quote, : incomplete final line found by readTableHeader on "file_path/file.xls" 生成的数据框有 0 行和一个带有无意义名称的单列。你知道这个警告是什么意思吗?
  • 抱歉,请参阅我的编辑;函数应该是“read_delim”。这适用于我的 .xls 文件。有更好的吗?
  • 很遗憾没有。它读取一些东西,但不是真正的文件内容。它创建了一个包含几千行和一列的数据框。 Col 名称是无意义的符号,行为空。我认为问题是我必须指定的 delim 论点。我为制表符尝试了“\t”,为空格尝试了“”,但都没有工作。
  • 您能否共享 .xls 文件或创建一个可重现的导致错误的示例?
  • 不,我不能共享文件。对不起。至于可重现的示例,我确实使用 read_excel 成功读取了其他 .xls 文件。我尝试手动创建的任何示例都不会重现该问题。我试图阅读的文件不是手动生成的。出于某种原因,R 仅对那些特定的 .xls 文件有问题。但是,它们在 Excel 本身中打开没有问题,因此它们似乎没有以某种方式损坏。会不会是文件的编码有问题?
猜你喜欢
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
相关资源
最近更新 更多