将来自多个 excel 个工作簿的多个工作表合并到一个工作簿中。 R

Combining multiple worksheets from multiple excel workbooks into a single workbook via. R

假设我有两个 excel 工作簿(例如 A.xlsx 和 B.xlsx),每个工作簿都包含多个工作表(例如 A.xlsx 中的“a1”和“a2” ; B.xlsx 中的“b1”、“b2”和“b3”)。请注意,这些工作表都有自己的条件格式、过滤、缩放和其他查看选项。

鉴于此设置,是否可以通过生成组合工作簿。 R(例如 C.xlsx)包含来自 A.xlsx 和 B.xlsx 的 5 个工作表(例如 [= 中的“a1”、“a2”、“b1”、“b2”和“b3” 19=]) 还保留了所有原始条件格式、过滤、缩放和其他查看选项?感谢您的帮助!

我们可以在 map2 中一起阅读两个数据集。从 'A.xlsx' 和 'B.xlsx' 数据中获取 sheet 名称。使用 sheet 名称创建文件路径的命名向量,使用 imap 遍历向量,使用 read_excel 读取 sheets,在创建用于标识的列后将它们绑定在一起sheetname,并将 imaplist 输出合并为单个 listimap

library(purrr)
library(dplyr)
library(readxl)
library(openxlsx)

# // replace the path/to/your - actual path
fileA <- 'path/to/your/A.xlsx'
fileB <- 'path/to/your/B.xlsx'
nmA <- excel_sheets(path = fileA)
nmB <- excel_sheets(path = fileB)
nm1A <- setNames(rep(fileA, length(nmA)), nmA)
nm1B <- setNames(rep(fileB, length(nmB)), nmB)
lstC <- imap(c(nm1A, nm1B), ~ 
              read_excel(.x, sheet = .y) %>%
                  mutate(sheetname = .y))
names(lstC) <- c(nmA, nmB)
write.xlsx(lstC, '/path/to/your/C.xlsx')