如何使用 openxlsx(具有相同的布局)修改 Excel 中的现有 sheet?

How do I modify an existing sheet in Excel using openxlsx (with same lay-out)?

假设我创建了以下 Excel 文件:

library(openxlsx)
library(writexl)

writexl::write_xlsx(list(iris = iris, mtcars = mtcars), "example_modify_exceltab.xlsx")

那我想修改这个文件中已有的一个sheet。我使用以下问题的答案:

wb <- loadWorkbook("example_modify_exceltab.xlsx")

然后我添加一个 sheet 数据 'USArrests':

addWorksheet(wb, sheetName = "USArrests")
writeData(wb, sheet = "USArrests", USArrests, colNames = TRUE)

保存工作簿:

saveWorkbook(wb, "example_modify_exceltab1.xlsx", overwrite = TRUE)

现在的问题是文件example_modify_exceltab.xlsx中的数据有列名,而'example_modify_exceltab1.xlsx'中的列名是空的。我想实现 sheets irismtcars 仍然具有与 example_modify_exceltab.xlsx 中相同的列名。如何使用 openxlsx?

实现此目的

这似乎与两个包一起使用有关,即使你在添加新的sheet之前保存,headers也不见了。

但是您可以使用 openxlsx 包中的 write.xls,它工作正常,只需更改此行:

writexl::write_xlsx(list(iris = iris, mtcars = mtcars), "example_modify_exceltab.xlsx")

至:

openxlsx::write.xlsx(list(iris = iris, mtcars = mtcars), "example_modify_exceltab.xlsx")

您的脚本将运行按预期