Новая строка в openxlsx - PullRequest
       84

Новая строка в openxlsx

0 голосов
/ 27 апреля 2020

Вопрос по библиотеке openxlsx в R:

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

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

Например, этот вариант решения не работает:

openxlsx::write.xlsx(data.frame("I want this in two lines\nin one cell"), stringsAsFactors = FALSE, file = "foo.xlsx")

Все еще напечатано в одной строке.

1 Ответ

0 голосов
/ 06 мая 2020

Попробуйте:

Кажется, много работы для чего-то такого простого в excel, но я нашел это с помощью openxlsx, вы можете делать большинство вещей с небольшим усилием, мне очень нравится пакет.




txt <- data.frame(t = c("I want this in two lines", "in one cell"), stringsAsFactors = FALSE)


wb <- createWorkbook()
addWorksheet(wb, "Sheet 1")
writeData(wb, "Sheet 1", x = txt)
# to make sure your text shows as two lines
setRowHeights(wb, "Sheet 1", rows = 4, height = 30)

# this seems to force the line break to split the text over two lines
style1 <- createStyle(wrapText = TRUE)
addStyle(wb, sheet = 1, style1, rows = 4, cols = 1, gridExpand = TRUE)

#narrow width produces multiple lines as a consequence of text wrap
setColWidths(wb, sheet = 1, cols = 1, widths = 40)

#Here's the key bit; excel does not seem to like \n as a line break an online search suggested CHAR(10) as the alternative to `alt enter` keystroke for line break in an excel cell 
writeFormula(wb, 1, x = "A2&CHAR(10)&A3", startCol = 1, startRow = 4)

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


Что приводит к:

enter image description here

...