Как изменить существующий лист в Excel с помощью openxlsx (с таким же макетом)?

Допустим, я создаю следующий файл Excel:

library(openxlsx)
library(writexl)

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

Затем я хотел бы изменить существующий лист в этом файле. Я использую ответ из следующего вопроса: Как изменить существующий лист в книге Excel с помощью пакета Openxlsx в R?

wb <- loadWorkbook("example_modify_exceltab.xlsx")

Затем добавляю лист с данными 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 пусты. Я хотел бы добиться, чтобы листы iris и mtcars имели те же имена столбцов, что и в example_modify_exceltab.xlsx. Как добиться этого с помощью openxlsx?


person mharinga    schedule 19.04.2021    source источник


Ответы (1)


похоже, это связано с использованием двух пакетов вместе, даже если вы сохраните перед добавлением нового листа, заголовки отсутствуют.

Но вы можете использовать write.xls из пакета openxlsx, и он отлично работает, просто измените эту строку:

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

to:

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

и ваш скрипт будет работать как задумано

person Jayvee    schedule 19.04.2021