我正在使用
data.substr
截断数据表中的长单词。但是,当我尝试使用按钮扩展导出表格时,导出的表格包含由“...”表示的截断单词,而不是整个单词。
有没有办法在Shiny应用程序中显示“...”,同时确保整个表格不被截断导出到Excel?
这是一个可重现的示例:
library(shiny)
ui <- fluidPage(
dataTableOutput("test")
)
server <- function(input, output, session) {
dt = data.frame(x=c("blablablablablablablablablablablablal","blablablablablablablablablablablablal"),y=c(1,2))
output$test <- renderDataTable({
datatable(dt, rownames = TRUE,
extensions = 'Buttons',escape=FALSE,class = 'cell-border stripe',
selection = list( mode="single"),
option=list(dom = "Bt",buttons = list("copy", list(extend = "collection", buttons = c("csv", "excel"), text = "Download") ),
columnDefs = list(list(
targets = c(0,1),
render = JS(
"function(data, type, row, meta) {",
"return type === 'display' && data != null && data.length > 35 ?",
"'<span title=\"' + data + '\">' + data.substr(0, 8) + '...</span>' : data;",
"}")
))
)
)
})
}
shinyApp(ui, server)
注意:我不想使用 downloadHandler 导出表:-)
感谢您的帮助
我尝试使用省略号插件,但得到了相同的结果。
您可以使用正交数据来做到这一点:
library(DT)
dt <- data.frame(
x = c(
"blablablablablablablablablablablablal",
"blablablablablablablablablablablablal"
),
y = c(1,2)
)
datatable(
dt, rownames = TRUE,
extensions = "Buttons", class = "cell-border stripe",
selection = list(mode = "single"),
options = list(
dom = "Bt",
buttons = list(
"copy",
list(
extend = "excel",
text = "Download",
exportOptions = list(
orthogonal = "export"
)
)
),
columnDefs = list(list(
targets = c(0, 1),
render = JS(
"function(data, type, row, meta) {",
" if(type === 'export') {",
" return data;",
" }",
" return type === 'display' && data != null && data.length > 35 ?",
" '<span title=\"' + data + '\">' + data.substr(0, 8) + '...</span>' : data;",
"}")
))
)
)
这不适用于
extend = "collection"
。