R:将工作表添加到现有的Excel工作簿中

时间:2018-06-26 09:48:51

标签: r xlsx

在我的脚本中,我需要创建一个包含许多工作表的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')

我想先将sheet1的内容添加到dc_sheet,再将sheet2的内容添加到ro_sheet,然后再将更多数据添加到as_sheet中,然后保存工作簿。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

我很确定一个简单的赋值语句就能解决问题:

template_wb <- loadWorkbook(file = 'template.xlsx')
sheets <- getSheets(template_wb)  
sheet1 <- sheets[[1]]
sheet2 <- sheets[[2]]
wb<-createWorkbook(type="xlsx")
as_sheet <- createSheet(wb, sheetName = "AS")
dc_sheet <- createSheet(wb, sheetName = "DC")
ro_sheet <- createSheet(wb, sheetName = "RO")
dc_sheet<-sheet1
ro_sheet<-sheet2
# Your code here
saveWorkbook(wb, 'out.xlsx')

我尝试了一下,效果很好

答案 1 :(得分:0)

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

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