如何将多个工作簿合并为一个Excel文件,并以选项卡/工作表形式显示?

3

我一直在使用openxlsx包来格式化不同的Excel文件(例如,基于条件突出显示一行)。

我使用这个包创建了两个工作簿,每个工作簿都有不同的格式。现在,我想将这两个工作簿合并成一个单独的Excel文件,其中这些单独的工作簿是选项卡。有办法做到这一点吗?我知道你可以用多个数据框来做到这一点,但如果我这样做,那么我就会失去我的格式。

例如,我尝试了这个:

wb <- createWorkbook()
addWorksheet(wb, sheetName="data")
writeData(wb, sheet="data", x=data)

wb2 <- createWorkbook()
addWorksheet(wb2, sheetName="data2")
writeData(wb2, sheet="data2", x=data2)

write.xlsx(wb, file = "combined.xlsx", sheetName="data", row.names=FALSE)
write.xlsx(wb2,file = "combined.xlsx", sheetName="data2", append = TRUE, row.names=FALSE)

但它似乎只适用于数据框。

如果你使用xlsx包,它允许你将工作表作为对象进行操作。 - Rohit
@Rohit 正确,但 xlsx 有一个相当烦人的 Java 依赖,而 openxlsx 没有。 - Dan Chaltiel
1个回答

0
根据你的示例,我会这样做:
wb <- createWorkbook()
addWorksheet(wb, sheetName="data")
writeData(wb, sheet="data", x=data)
write.xlsx(wb, "combined.xlsx")

wb2 <- createWorkbook()
addWorksheet(wb2, sheetName="data")
writeData(wb2, sheet="data", x=data)
write.xlsx(wb2, "wb2.xlsx")

wb_comb <-loadWorkbook("combined.xlsx")

lapply(sheets(wb2), function(s) {
  dt <- read.xlsx("wb2.xlsx", sheet = s)
  addWorksheet(wb_comb , sheetName = s)
  writeData(wb_comb, s, dt)
})

write.xlsx(wb_comb, "combined.xlsx")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接