如何使用 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 iris
和 mtcars
仍然具有与 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")
您的脚本将运行按预期
假设我创建了以下 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 iris
和 mtcars
仍然具有与 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")
您的脚本将运行按预期