Openxlsx в R Cell Слияние и центрирование контента - PullRequest
0 голосов
/ 07 ноября 2019

Я использую openxlsx в r для создания файлов Excel с определенными параметрами форматирования. Ниже приведен код многократного использования:

library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb, "TestSheet")
df <- mtcars
df$Car <- row.names(mtcars)
row.names(df) <- NULL
df <- df[,c(length(df), 1:length(df)-1)]

forTopTit <- createStyle(fontColour = "#ffffff", fgFill = "#F4D03F",halign = "center",wrapText = TRUE,valign = "center")
forColHdr <- createStyle(fontColour = "#ffffff", fgFill = "#4F81BD",halign = "center",wrapText = TRUE,valign = "center")
forDatStl <- createStyle(fontColour = "#ffffff", halign="center")

writeData(wb,"TestSheet", "THIS IS A TEST MESSAGE", startCol = 1,startRow = 1,colNames = FALSE, rowNames = TRUE,
          headerStyle = forTopTit,borders = "surrounding",borderStyle = "medium")

writeData(wb,"TestSheet", df, startCol = 1,startRow = 2,colNames = TRUE,rowNames = FALSE,
          headerStyle = forColHdr,borders='all',borderStyle = "thin")
mergeCells(wb, "TestSheet", cols=1:length(df), rows=1)
setColWidths(wb, "TestSheet", ignoreMergedCells = TRUE,cols = 1:ncol(df), widths = "auto")
openXL(wb)

У меня две проблемы:

  1. Заголовок, который я пытаюсь создать в первом столбце первой строки (которыйявляется объединенной ячейкой) всегда выровнено по левому краю и цвет не применяется.

  2. Я хочу центрировать данные из строки 3, столбец 2, что я не могу сделать. Я попытался использовать следующий код:

    addStyle (wb, "TestSheet", style = forDatStl, rows = 3: nrow (df), cols = 3: length (df), gridExpand = TRUE)

Приведенный выше тип скрывает все точки данных, хотя все еще остается в ячейке. Я не могу их видеть, но когда я выбираю ячейку, я вижу ее в итоговой строке над листом. Я использую Ubuntu 18.04 и Libre Office Calc.

1 Ответ

1 голос
/ 07 ноября 2019

Ваши ячейки "скрыты", потому что вы установили цвет #ffffff, который является белым, и фон белый.

Используйте другой цвет:

forDatStl <- createStyle(fontColour = "#000000", halign="center")

Чтобы отцентрироватьобъединенные ячейки:

centerStyle <- createStyle(halign = "center")
mergeCells(wb, "TestSheet", cols=1:length(df), rows=1)
addStyle(wb, "TestSheet", centerStyle, rows = 1, cols = 1)

enter image description here

...