r语言 - openxlsx :: write.xlsx覆盖现有工作表的附加



openxlsx::write.xlsx函数是覆盖电子表格而不是添加另一个选项卡。

我尝试过遵循stackoverflow的一些方向,但没有成功。

dt.escrita <- format(Sys.time(), '%Y%m%d%H%M%S')
write.xlsx( tbl.messages
           ,file = paste('.\2_Datasets\messages_',dt.escrita,'.xlsx')
           ,sheetName = format(Sys.time(), '%d-%m-%y')
           ,append = FALSE)
write.xlsx( tbl.dic.dados
            ,file = paste('.\2_Datasets\messages_',dt.escrita,'.xlsx')
            ,sheetName = 'Dicionario_Dados'
            ,append = TRUE)

一个带有两个选项卡的电子表格命名:30-07-19和DICIONARIO_DADOS。

不确定我是否正确理解,您是否要使用两个选项卡/表格创建一个XLSX文件?然后,我通常首先创建床单,然后单独写入每个表格(这不同于将数据添加到同一表格中(。

library("openxlsx")
mtcars1 <- mtcars %>% filter(cyl == 4)
mtcars2 <- mtcars %>% filter(cyl == 6)
wb <- createWorkbook()
addWorksheet(wb, "mtcars1")
addWorksheet(wb, "mtcars2")
writeData(wb, "mtcars1", mtcars1, startRow = 1, startCol = 1)
writeData(wb, "mtcars2", mtcars2, startRow = 1, startCol = 1)
saveWorkbook(wb, file = "excel_test.xlsx", overwrite = TRUE)

更新:只是想知道为什么我从未在openxlsx中使用append参数(这是我用于阅读/写作Excel的标准软件包(。似乎没有这样的三个函数write.xlsx()writeData()writeDataTable()没有这样的论点。至少它不在文档中。

当调用未知参数时,该函数似乎不会丢失错误,例如,以下调用具有不存在的somearg,但没有返回错误。

write.xlsx(mtcars2,
           file = "excel_test.xlsx",
           sheetName = "mtcars1",
           somearg = TRUE)

更新2 要将数据附加到现有表中,您可以在现有工作表的行数中阅读,请添加 1并将此值用作Startrow:

wb2 <- loadWorkbook(file = "excel_test.xlsx")
writeData(wb2,
          "mtcars1",
          mtcars2,
          colNames = FALSE,
          startRow = nrow(readWorkbook("excel_test.xlsx"))+1)
#Fixed the call to nrow, instead of ncol.
saveWorkbook(wb2, file = "excel_test.xlsx", overwrite = TRUE)

将不同的数据帧写入不同的床单。

library(xlsx)
write.xlsx(dataframe1, file="filename.xlsx", sheetName="sheet1")
write.xlsx(dataframe2, file="filename.xlsx", sheetName="sheet2", append=TRUE)

您可以简单地使用命名的dataframes列表:

library(openxlsx)
df_lst <- setNames(list(tbl.messages, tbl.dic.dados), as.list(c(format(Sys.time(), '%d-%m-%y'), 'Dicionario_Dados')))
write.xlsx( df_lst, file = paste0('.\2_Datasets\messages_',dt.escrita,'.xlsx') )

xlsx软件包的write.xlsx函数确实具有一个附加参数

最新更新