openxlsx добавляет несколько строк в верхний / нижний колонтитул - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь создать заголовки книги Excel XLSX с некоторым форматом. Некоторые строки слишком велики и их нужно обернуть.

Но когда я делаю это с strwrap добавлением \ n символа, setHeaderFooter говорит мне, что у меня более трех параметров

например:

require (openxlsx)
require (tidyverse)

wb0 <- createWorkbook()
addWorksheet(wb0, "Sheet 1")

label <- "&B EJECUTIVOS DE CUENTA: &B"
value <- "FANARA ARIEL GUSTAVO:476, BARETTO ANA SILVINA:34, NO APLICA:32, SANTOS MAXIMILIANO ARIEL:21, AVILA ROBERTO:19, REGGI PABLO:9, Otros:51"


setHeaderFooter (
  wb0, sheet = 1
  , header = c ( 
    # "left side / izquierda"
    strwrap (
      x = paste0 (
          label, " "
        , substr (value, start = 1, stop = 360)
      )
      , width = 45
      , prefix = "\n", initial = ""
    )
    , "center header / centro"
    , "rigth side / derecha"
  ) 
  , footer = c (
    "&[Date]"
    ,  NA
    , "&[File]"
  )
)    

1 Ответ

0 голосов
/ 30 августа 2018

strwrap создает вектор длиной 4, поэтому общее количество элементов в вашем заголовке равно 6, а не 3, которое требуется setHeaderFooter.

strwrap(x = paste0 (label, " ", substr (value, start = 1, stop = 360)), 
        width = 45, prefix = "\n", initial = "")

[1] "&B EJECUTIVOS DE CUENTA: &B FANARA ARIEL"    "\nGUSTAVO:476, BARETTO ANA SILVINA:34, NO"   "\nAPLICA:32, SANTOS MAXIMILIANO ARIEL:21,"  
[4] "\nAVILA ROBERTO:19, REGGI PABLO:9, Otros:51"

Итак, давайте свернем это в один строковый вектор, обернув его в paste:

paste(strwrap(x = paste0 (label, " ", substr (value, start = 1, stop = 360)), 
              width = 45, prefix = "\n", initial = ""), 
      collapse="")

[1] "&B EJECUTIVOS DE CUENTA: &B FANARA ARIEL\nGUSTAVO:476, BARETTO ANA SILVINA:34, NO\nAPLICA:32, SANTOS MAXIMILIANO ARIEL:21,\nAVILA ROBERTO:19, REGGI PABLO:9, Otros:51"

Теперь вы получите заголовок с 3 элементами, которые ожидает функция. Вот как выглядит заголовок в файле Excel:

enter image description here

...