rhandsontable,将文本换行在列的单元格中(和自动行高)

Posted

技术标签:

【中文标题】rhandsontable,将文本换行在列的单元格中(和自动行高)【英文标题】:rhandsontable, wrap text in cells of column (and auto row height) 【发布时间】:2020-08-30 04:06:56 【问题描述】:

数据...

DF <- data.frame(a = c("hi", rep(NA, 4)),
                 b = letters[1:5],
                 c = LETTERS[1:5],
                 stringsAsFactors = FALSE)

当我固定列宽和行高时,如何强制文本在单元格内换行(对于所有列还是部分列?)

rhandsontable(DF, stretchH = "all", height = 300 ) %>%
  hot_cols(colWidths = c(100, 50, 50),
           manualColumnMove = FALSE,
           manualColumnResize = TRUE
           ##, wordWrap = "yes please"
           ) %>%
  hot_rows(rowHeights = 75 ) %>%
  hot_context_menu(allowRowEdit = TRUE, allowColEdit = FALSE)

更好的是,我可以保留 rowHeight "auto"/default 并让它根据需要扩展文本换行吗?

rhandsontable(DF, stretchH = "all", height = 300 ) %>%
  hot_cols(colWidths = c(100, 50, 50),
           manualColumnMove = FALSE,
           manualColumnResize = TRUE
           ##, wordWrap = "yes please"
  ) %>%
  hot_rows(rowHeights = NULL ) %>% #default
  hot_context_menu(allowRowEdit = TRUE, allowColEdit = FALSE)

请帮忙,谢谢

【问题讨论】:

相关参数wordWrap似乎默认为true:handsontable.com/docs/7.4.2/Options.html#wordWrap,但在R中没有使用。因此,我会在Github上提出问题:github.com/jrowen/rhandsontable/issues?q=wordwrap。 【参考方案1】:

由于您使用shiny 标记了问题,我假设您将表格嵌入到闪亮的应用程序中。在这种情况下,您可以将表格嵌套在 div 中,并使用 css 设置表格样式以使用自动换行。

这是一个例子:

DF <- data.frame(
  a = c("hi", rep(NA, 4)),
  b = sapply(1:5, function(x) paste(sample(letters, size=x*5), collapse='')),
  c = LETTERS[1:5],
  stringsAsFactors = FALSE
)

library(shiny)  
ui <- fluidPage(
  tags$style('#myid *  word-wrap: break-word; color: blue '),  # apply styling to children of myid
  div(id='myid', rHandsontableOutput('tbl'))
)
server <- function(input, output, session) 
  output$tbl <- renderRHandsontable(
    rhandsontable(DF, stretchH = "all", height = 300 ) %>%
      hot_cols(colWidths = c(100, 50, 50),
               manualColumnMove = FALSE,
               manualColumnResize = TRUE
               ##, wordWrap = "yes please"
      ) %>%
      hot_rows(rowHeights = NULL ) %>% #default
      hot_context_menu(allowRowEdit = TRUE, allowColEdit = FALSE)
  )

shinyApp(ui, server)

【讨论】:

完美 - 在我的 custom.css 中定义它。谢谢!

以上是关于rhandsontable,将文本换行在列的单元格中(和自动行高)的主要内容,如果未能解决你的问题,请参考以下文章

excel2003如何设置自动换行

Shiny and rhandsontable - 基于列总和的条件单元格/列格式

rhandsontable 中单元格背景的动态着色

防止在列标题单击时选择 Handsontable 单元格

如何在 Shiny 的 rhandsontable 单元格中嵌入模态

EXCEL表格设定宽度以后,文字填满了如何自动换行