【问题标题】:How to combine multiple workbooks into one excel file displayed as tabs/work sheets?如何将多个工作簿合并为一个显示为选项卡/工作表的 Excel 文件?
【发布时间】:2020-03-02 04:56:58
【问题描述】:

我一直在使用 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 正确,但 xlsx 有一个非常烦人的 Java 依赖项,而 openxlsx 没有。

标签: r excel openxlsx


【解决方案1】:

按照您的示例,我将执行以下操作:

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")

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    相关资源
    最近更新 更多