openxlsx::write.xlsx 覆盖现有工作表而不是追加
openxlsx::write.xlsx overwriting existing worksheet instead append
openxlsx::write.xlsx
函数正在覆盖电子表格,而不是添加另一个标签。
我尝试遵循 Whosebug 的一些指导,但没有成功。
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。
不知道我理解的对不对,你想用两个tabs/sheets创建一个xlsx文件?
然后我通常首先创建 sheets 然后分别写入每个 sheet(这不同于通过附加将数据添加到相同的 sheet)。
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
参数(这是我对 read/writing excel 的标准包)。 write.xlsx()
、writeData()
、writeDataTable()
这三个函数似乎都没有这样的论点。至少它不在文档中。
函数在使用未知参数调用时似乎不会抛出错误,例如下面的调用有一个不存在的 somearg
,但 returns 没有错误。
write.xlsx(mtcars2,
file = "excel_test.xlsx",
sheetName = "mtcars1",
somearg = TRUE)
更新 2
要将数据附加到现有 table,您可以读取现有工作的行数 sheet,添加 +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)
您可以简单地使用命名的数据帧列表:
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') )
openxlsx::write.xlsx
函数正在覆盖电子表格,而不是添加另一个标签。
我尝试遵循 Whosebug 的一些指导,但没有成功。
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。
不知道我理解的对不对,你想用两个tabs/sheets创建一个xlsx文件? 然后我通常首先创建 sheets 然后分别写入每个 sheet(这不同于通过附加将数据添加到相同的 sheet)。
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
参数(这是我对 read/writing excel 的标准包)。 write.xlsx()
、writeData()
、writeDataTable()
这三个函数似乎都没有这样的论点。至少它不在文档中。
函数在使用未知参数调用时似乎不会抛出错误,例如下面的调用有一个不存在的 somearg
,但 returns 没有错误。
write.xlsx(mtcars2,
file = "excel_test.xlsx",
sheetName = "mtcars1",
somearg = TRUE)
更新 2 要将数据附加到现有 table,您可以读取现有工作的行数 sheet,添加 +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)
您可以简单地使用命名的数据帧列表:
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') )