You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言无法读取后缀为.xls但实际为.xlsx的Excel文件求助

解决批量读取后缀为.xls但实际为xlsx格式文件的问题

问题根源

你的文件后缀标注为.xls,但通过format_from_signature检测可知,文件实际是xlsx格式。read_excel默认根据文件后缀选择解析器,用处理xls的libxls库去读取xlsx文件,就会触发「Unable to open file」错误。

解决方法

1. 单个文件读取(强制指定格式)

直接在read_excel中指定format = "xlsx",忽略后缀限制:

df <- read_excel("report.xls", format = "xlsx")

2. 批量读取方案

先批量获取目标文件路径,再按需求读取:

方案一:统一按xlsx格式读取(适用于所有文件实际都是xlsx的情况)
library(readxl)
library(purrr)

# 获取指定文件夹下所有.xls后缀的文件完整路径
file_paths <- list.files(path = "C:/Users/abc/Desktop/file1", 
                         pattern = "\\.xls$", 
                         full.names = TRUE)

# 批量读取并存储为数据框列表
df_list <- map(file_paths, ~read_excel(.x, format = "xlsx"))

# (可选)将所有数据框合并为一个
combined_df <- bind_rows(df_list)
方案二:根据文件实际格式动态读取(兼容xls和xlsx混合的情况)

先检测每个文件的真实格式,再对应选择解析器:

library(readxl)
library(purrr)

file_paths <- list.files(path = "C:/Users/abc/Desktop/file1", 
                         pattern = "\\.xls$", 
                         full.names = TRUE)

df_list <- map(file_paths, function(file) {
  # 获取文件实际格式
  actual_format <- format_from_signature(file)
  # 按真实格式读取
  read_excel(file, format = actual_format)
})

combined_df <- bind_rows(df_list)

内容的提问来源于stack exchange,提问作者Gambit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:32:15