【问题标题】:Append worksheets from different workbooks into one workbook using openxlsx R (keeping the format)使用 openxlsx R 将不同工作簿中的工作表附加到一个工作簿中(保持格式)
【发布时间】:2020-10-30 14:39:57
【问题描述】:

我有不同的 openxlsx 工作簿,比如说 wb1、wb2 和 wb3,每个工作簿都有不同格式的工作表。我需要一些方法将所有工作表附加到同一个工作簿中,请注意,制作一个工作簿并从头开始添加每个工作表对我来说不是一个选项,因为我需要单独的每个 .xlsx 文件,然后是一个包含所有文件的大文件工作表(保持格式)。

如果您知道如何从不同的 wbs 中克隆工作表,那也可以解决问题。

提前致谢!

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。

标签: r append openxlsx


【解决方案1】:

试试这个:


library(openxlsx)
library(xlsx)
library(readxl)
library(purrr)

假设您创建了两个工作簿,每个工作簿都有多个工作表:

我正在使用 openxlsxxlsx 包中的示例工作簿

设置工作簿文件路径 我使用了示例测试 xlsx 文件,实际上您只需使用 your_wb <- "path_to_your_file.xlsx"

# sample workbooks
wb1 <- system.file("extdata", "readTest.xlsx", package = "openxlsx")
wb2 <- system.file("tests", "test_import.xlsx", package = "xlsx")

# vector of workbook paths
wbs <- c(wb1, wb2)

# read worksheet names from both workbooks into a list which becomes the contents of your "cloned" or "big" workbook
sh_nm <- map(wbs, excel_sheets)

# number of sheets in each workbook
sh_nr <- unlist(map(sh_nm, length))

# list of workbook names to match the number of sheets respectively for each workbook
wb_list <- rep(wbs, sh_nr)

# list of all sheet names
sh_list <- unlist(sh_nm)

# combine data from all worksheets and give each list element a unique name
sh_all <- 
  map2(wb_list, sh_list, ~openxlsx::read.xlsx(.x, sheet = .y)) %>% 
  set_names(paste(rep(c("wb1", "wb2"), sh_nr), sh_list, sep = "_")) 

#save data, openxlsx automatically places each list element into a separate worksheet with the list element name as the worksheet name.
openxlsx::write.xlsx(sh_all, "wb_all.xlsx")

reprex package (v0.3.0) 于 2020-07-10 创建

【讨论】:

  • 这是附加工作表的一种非常好的方式,非常感谢您的时间,我最大的问题是保持每张工作表的格式。我设法解决了格式和表格的具体问题。基本上,因为我是 R 中所有 wb 的创建者,首先我保存了“大” - 将 wb 与所有工作表连接起来,并在一个循环中为需要的“个人” wb 数量,我删除了不属于的工作表到那个 wb。最后,我有一个大的 - 加入了一个和正确格式的个人。我可能不是最佳实践,但现在工作了。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-22
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
相关资源
最近更新 更多