You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用R按文件名前缀合并多个xlsx文件为对应多工作表xlsx文件

当然可以用R实现这个需求!

我来给你一步步拆解实现方法,用到几个专门处理Excel的R包,操作起来很顺畅:

第一步:安装并加载所需包

我们需要两个核心包:

  • readxl:用来读取Excel文件内容
  • openxlsx:用来创建包含多个工作表的Excel文件

先安装(首次运行需要)并加载它们:

# 安装包(仅首次运行时需要)
install.packages(c("readxl", "openxlsx"))

# 加载包
library(readxl)
library(openxlsx)

第二步:设定工作目录并获取文件列表

先把工作目录切换到你存放这些Excel文件的文件夹,或者直接在代码里指定路径:

# 替换成你的文件实际存放路径
setwd("你的Excel文件所在目录")

# 获取目录下所有.xlsx格式的文件
file_list <- list.files(pattern = "\\.xlsx$")

第三步:按前缀分组文件

我们需要把文件名里的前缀(Russia、USA)提取出来,然后把同前缀的文件归为一组:

# 提取每个文件的前缀(比如从"Russia - GDP.xlsx"中得到"Russia")
file_prefixes <- sub(" - .*\\.xlsx", "", file_list)

# 按前缀对文件列表进行分组
grouped_files <- split(file_list, file_prefixes)

第四步:批量合并并保存结果

遍历每个分组,读取文件内容,然后写入到对应名称的Excel文件中,每个文件包含GDP和GNP两个工作表:

# 遍历每个前缀分组
for (prefix in names(grouped_files)) {
  # 创建一个新的Excel工作簿
  wb <- createWorkbook()
  
  # 遍历当前分组里的每个文件
  for (file in grouped_files[[prefix]]) {
    # 提取工作表名称(比如从"Russia - GDP.xlsx"中得到"GDP")
    sheet_name <- sub(".* - (.*)\\.xlsx", "\\1", file)
    
    # 读取当前Excel文件的数据
    df <- read_excel(file)
    
    # 将数据添加为工作簿的一个工作表
    addWorksheet(wb, sheet_name)
    writeData(wb, sheet_name, df)
  }
  
  # 保存工作簿为前缀命名的Excel文件(如果文件已存在会覆盖)
  saveWorkbook(wb, paste0(prefix, ".xlsx"), overwrite = TRUE)
}

小提示

  • 如果你的Excel文件包含特殊格式(比如公式、单元格样式),openxlsx能保留大部分基础格式;如果需要更精准的格式兼容,可以试试xlsx包,但它依赖Java环境,配置相对麻烦。
  • 运行前记得把setwd里的路径改成你自己的文件路径,也可以用绝对路径替代,避免路径错误。

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

火山引擎 最新活动