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
相关产品推荐
相关产品推荐

