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

如何在R中读取文件夹所有Excel文件并合并单文件内工作表生成独立数据集?

解决方案:读取文件夹中Excel文件并合并每个文件内的所有工作表

你的原函数逻辑存在问题:mget(ls(...))是从全局环境中匹配变量名,而非读取磁盘上的Excel文件;且bind_cols是直接列绑定,不是按共同列合并。以下是符合需求的实现代码:

1. 加载所需包

library(openxlsx)
library(dplyr)
library(purrr) # 用于批量合并数据框

2. 生成示例Excel文件(用于测试)

# 生成第一个示例Excel:含2个带共同id列的工作表
data(mtcars)
data(ChickWeight)
ChickWeight2 <- ChickWeight %>% head(32) %>% mutate(id = 1:32)
mtcars2 <- mtcars %>% mutate(id = 1:32)
write.xlsx(list(sheet1 = ChickWeight2, sheet2 = mtcars2), file = "示例文件1.xlsx")

# 生成第二个示例Excel:含3个带共同id列的工作表
iris1 <- iris %>% head(32) %>% mutate(id = 1:32)
iris2 <- iris %>% select(-Species) %>% head(32) %>% mutate(id = 1:32, new_col = rnorm(32))
iris3 <- iris %>% select(Sepal.Length) %>% mutate(id = 1:32)
write.xlsx(list(sheetA = iris1, sheetB = iris2, sheetC = iris3), file = "示例文件2.xlsx")

3. 核心实现函数

merge_excel_sheets <- function(folder_path = getwd()) {
  # 获取文件夹下所有Excel文件的完整路径
  excel_files <- list.files(path = folder_path, pattern = "\\.xlsx$", full.names = TRUE)
  
  # 遍历每个Excel文件
  for (file in excel_files) {
    # 获取当前文件的所有工作表名称
    sheet_names <- getSheetNames(file)
    
    # 读取所有工作表,存入列表
    sheet_list <- map(sheet_names, ~ read.xlsx(file, sheet = .x))
    
    # 自动识别共同列,依次合并所有工作表(类似left_join逻辑)
    merged_df <- sheet_list %>% 
      reduce(function(x, y) left_join(x, y, by = intersect(names(x), names(y))))
    
    # 生成数据集名称:去掉文件后缀的文件名
    df_name <- tools::file_path_sans_ext(basename(file))
    
    # 将合并后的数据集存入全局环境
    assign(df_name, merged_df, envir = .GlobalEnv)
    
    cat("已完成处理:", basename(file), "→ 合并后数据集:", df_name, "\n")
  }
}

4. 运行函数并查看结果

# 运行函数(默认处理当前工作目录下的Excel文件)
merge_excel_sheets()

# 查看合并后的数据集
head(示例文件1)
head(示例文件2)

关键逻辑说明

  • list.files筛选出文件夹内所有.xlsx文件,full.names=TRUE确保获取完整文件路径
  • getSheetNames+map批量读取单个Excel内的所有工作表,生成数据框列表
  • reduce+left_join+intersect:自动识别相邻数据框的共同列作为合并键,依次完成多表合并,无需手动指定列名
  • tools::file_path_sans_ext提取不带后缀的文件名,作为合并后数据集的名称存入全局环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:06:02