openxlsx использует разные стили таблиц из моего обычного приложения Excel

Я хотел создать excel-файл, содержащий таблицу с определенным форматированием. Я использовал пакет openxlsx и искал в другом файле excel имя стиля таблицы, который я хотел использовать. После сохранения нового файла стиль таблицы отличался от ожидаемого. Кроме того, все стили таблиц в этом документе отличались от того, что я обычно использую (другой порядок и немного другие цвета), и нет никакого способа изменить их на стиль, который я хочу использовать.

Может кто-нибудь объяснить, откуда взялась разница и как я могу использовать обычные стили таблиц? Я использую Эксель 2016.

пример кода для создания таблицы:

library(openxlsx)
df <- data.frame(V1 = 1:2, V2 = letters[1:2])

wb <- createWorkbook()
addWorksheet(wb, 1)
writeDataTable(wb, 1, x = df, tableStyle = "TableStyleMedium7")

saveWorkbook(wb, file = "test.xlsx", overwrite = TRUE)

Мои обычные стили таблиц:

введите здесь описание изображения

стили таблиц openxlsx:

введите здесь описание изображения


person Gilean0709    schedule 23.08.2019    source источник


Ответы (1)


При создании новой книги с нуля в openxlsx по умолчанию установлены цвета Office 2007-2010.

Вы можете изменить цвета вручную после создания листа Excel, щелкнув ленту («Макет страницы» -> «Цвета» -> «Офис»).

Для регулярно запускаемой книги вместо создания нового файла извлеките шаблон, в котором вы установили нужные цвета по умолчанию. Ниже я открыл новый Excel, сохранил его с современными цветами по умолчанию и использовал в качестве шаблона:

library(openxlsx)

Data <- data.frame(
    X = sample(1:100),
    Y = sample(c("YES", "NO"), 10, replace = TRUE)
    )

#Save sheet to Excel
  # Load template
    wb <- loadWorkbook("blank_template.xlsx")
  # Add data to worksheet & write as table
     addWorksheet(wb, "rawdata")
     writeDataTable(wb, "rawdata", Data, tableStyle = "TablestyleMedium6")   
  # Remove the blank sheet from the template
     removeWorksheet(wb, "Sheet1")
  # Save workbook
     saveWorkbook(wb, file = paste0("output_file.xlsx"))

Я сохранил этот шаблон и использую его для нескольких отчетов о прогонах, так как люди могут шутить по поводу старых цветов. У меня есть сохраненная функция, которая удаляет пустой лист и сохраняет файл, чтобы сэкономить мне время, но в зависимости от того, как часто вы запускаете книгу, вам решать, как добиться эффективности.

person aspennington    schedule 12.03.2020
comment
Спасибо, не знал про Разметку страницы -> Цвета -> Офис и мне нравится решение с шаблоном. Если я просто хочу добавить его на первый лист, это можно даже упростить, если я просто использую номер индекса вместо имени рабочего листа в writeDataTable(). Тогда addWorksheet() и removeWorksheet() тоже больше не нужны. - person Gilean0709; 13.03.2020