需求:有n个Excel文件,每个文件包含表的数量不等,但全部表都有表名,并是根据同一的规范命名,比如与悟空有关的数据,存放在《悟空》表中,现在需要按表名对所有数据分类汇总
library(readxl)
library(data.table)
library(tidyverse)
library(writexl)
library(tidyxl)
setwd("d:/cloud")
# 将目录下所有文件名存入变量
(fl <- list.files())
# 选取需要的文件名
(bdl <- fl[!str_detect(fl,"档案|综合分析|csv")])
# 最终结果存放的变量result中
result <- list()
## 循环一:将excel读入内存
for(j in 1:length(bdl)){
bdt <- list()
for (sheet in excel_sheets(bdl[j])){
bdt[[sheet]] <- read_excel(bdl[j],sheet = sheet,col_types = 'text',col_names = FALSE)
}
## 按表名分类保存到结果集,else语句是关键
for(nm in names(bdt)){
if (nm %in% names(result)){
result[[nm]] <- rbind(result[[nm]],bdt[[nm]])
}else{
result[[nm]] <- bdt[[nm]]
}
}
}