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

如何在R中批量导入60个含多工作表的Excel文件?

一次性导入多份含多工作表的Excel文件(列数不同也适用)

当然可以一次性搞定!你已经写好了处理单个文件多工作表的函数,只需要再套一层逻辑,把这个函数批量应用到所有60个文件上就行,完全不用手动重复操作。下面是具体的实现步骤:

步骤1:收集所有Excel文件的路径

先把目标文件夹里的所有Excel文件路径都收集起来,假设你的文件都存在同一个文件夹下,用list.files()就能轻松搞定:

# 替换成你的Excel文件所在的实际文件夹路径
file_folder <- "your/excel/files/folder/path"
# 获取所有xlsx格式的文件路径(如果是xls格式,把pattern改成"\\.xls$")
all_excel_files <- list.files(path = file_folder, pattern = "\\.xlsx$", full.names = TRUE)

步骤2:扩展你的读取函数

你已经有了读取单个文件所有工作表的read_excel_allsheets函数,现在我们用lapply来批量处理所有文件:

# 保留你已有的读取单文件多工作表的函数
read_excel_allsheets <- function(filename) {
  sheets <- readxl::excel_sheets(filename)
  x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
  names(x) <- sheets
  x
}

# 批量读取所有文件的所有工作表
all_imported_data <- lapply(all_excel_files, read_excel_allsheets)
# 给外层列表命名为对应的文件名,方便后续快速定位数据
names(all_imported_data) <- basename(all_excel_files)

结果说明

运行完代码后,all_imported_data会是一个嵌套列表:

  • 第一层的每个元素对应一个Excel文件,名字就是该文件的文件名
  • 每个文件元素内部又包含8个元素,对应该文件的8个工作表,名字是工作表名称
  • 每个工作表元素就是对应工作表的数据集(data frame),不管各工作表列数差异多大,都能正常导入,完全不受影响

这样你就一次性完成了所有文件所有工作表的导入,再也不用逐个文件重复操作啦!

补充:如果后续需要对这些数据做进一步处理(比如按工作表名合并不同文件里的同名字工作表),也可以基于这个嵌套列表操作,但如果只是完成导入需求,上面的代码就完全够用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:30:55