如何使用R为文件夹内所有Excel文件的全部工作表新增文件名列
R语言实现方案
你可以用openxlsx包完成需求,该方案直接修改原Excel文件,不需要额外生成新文件或留存冗余数据框。
注意:运行代码前请先备份所有原始Excel文件,避免误操作导致数据损失。
操作步骤
- 第一步:安装并加载依赖包
# 首次使用先安装包 install.packages("openxlsx") library(openxlsx)
- 第二步:运行批量处理代码,将代码中的
your_excel_folder_path替换为你存放Excel文件的文件夹实际路径
# 设置Excel文件所在的文件夹路径 folder_path <- "your_excel_folder_path" # 读取文件夹下所有xlsx/xls格式文件 excel_files <- list.files(path = folder_path, pattern = "\\.xlsx$|\\.xls$", full.names = TRUE) # 遍历处理每个Excel文件 for (file_path in excel_files) { # 提取不带后缀的文件名,需要保留后缀的话删掉下面的gsub处理即可 file_name <- gsub("\\.xlsx$|\\.xls$", "", basename(file_path)) # 读取当前Excel的所有工作表名 sheet_names <- getSheetNames(file_path) # 加载工作簿对象 wb <- loadWorkbook(file_path) # 遍历处理每一张工作表 for (sheet in sheet_names) { # 读取工作表数据 df <- read.xlsx(wb, sheet = sheet) # 新增new_column列,所有行填充文件名 df$new_column <- file_name # 将修改后的数据写回原工作表,直接覆盖原有内容 writeData(wb, sheet = sheet, df, startRow = 1, overwrite = TRUE) } # 保存修改后的工作簿,直接覆盖原文件 saveWorkbook(wb, file_path, overwrite = TRUE) # 释放工作簿对象,避免占用内存 rm(wb) }
说明
- 如果你需要
new_column填充的是带后缀的完整文件名,删掉file_name定义行的gsub处理,直接写file_name <- basename(file_path)即可 - 该方案不会在R环境中留存多余的中间数据框,所有修改直接写入原文件,完全符合你的需求
内容的提问来源于stack exchange,提问作者Safat Hossain
相关产品推荐
相关产品推荐

