首页 > 解决方案 > R:将工作表添加到现有的 Excel 工作簿

问题描述

在我的脚本中,我需要创建一个包含许多工作表的 excel 工作簿,其中前 2 个工作表默认情况下是从另一个工作簿中读取并合并到导出的 excel 中。

我使用xlsx包来格式化导出 excel。但是,我在包中找不到任何xlsx可以从 excel 中读取工作表并将其添加到另一个工作表的函数。

这是我阅读第一个 excel 的代码:

template_wb <- loadWorkbook(file = 'template.xlsx')
sheets <- getSheets(wb)  
sheet1 <- sheets[[1]]
sheet2 <- sheets[[2]]

在代码的第二部分,我创建了另一个工作簿,其中包含多个工作表,其中 ,sheet1sheet2, 应该是其中之一。

 wb<-createWorkbook(type="xlsx")
 as_sheet <- createSheet(wb, sheetName = "AS")
 dc_sheet <- createSheet(wb, sheetName = "DC")
 ro_sheet <- createSheet(wb, sheetName = "RO")

 ### add content to worksheets
 # the suggested code should go there

### save workbook
saveWorkbook(wb, 'out.xlsx')

在向工作簿添加更多数据然后保存工作簿之前,我想添加 to 的内容和tosheet1dc_sheet内容。sheet2ro_sheetas_sheet

我怎样才能做到这一点?

标签: rxlsx

解决方案


您可以使用副本,并将其另存为新文件。

wb <- loadWorkbook(file)  
# Rename the sheets
wb$setSheetName(0L, "AS")
wb$setSheetName(1L, "DC")
# Delete the aditional sheets
sheets <- getSheets(wb)  
lapply(names(sheets)[-(1:2)], function(x) removeSheet(wb, sheetName = x))
# Assign the sheets to the objects of R
sheets <- getSheets(wb)  
as_sheet <- sheets[[1]]
dc_sheet <- sheets[[2]]
# Create the new sheet
ro_sheet <- createSheet(wb, sheetName = "RO")
# save workbook
saveWorkbook(wb, 'out.xlsx')

推荐阅读