用户可以在DT R Shiny中编辑标题后下载表格。

问题描述 投票:0回答:1

这是一个用户可以编辑列名标题的例子,我想添加下载按钮,用户编辑列名后可以下载表格,我如何保存他们编辑后的表格。我很感激任何帮助

library(shiny)
library(DT)
callback <- c(
  "$.contextMenu({",
  "  selector: '#table th',", 
  "  trigger: 'right',",
  "  autoHide: true,",
  "  items: {",
  "    text: {",
  "      name: 'Enter column header:',", 
  "      type: 'text',", 
  "      value: ''", 
  "    }",
  "  },",
  "  events: {",
  "    show: function(opts){",
  "      $.contextMenu.setInputValues(opts, {text: opts.$trigger.text()});",
  "    },",
  "    hide: function(opts){",
  "      var $this = this;",
  "      var data = $.contextMenu.getInputValues(opts, $this.data());",
  "      var $th = opts.$trigger;",
  "      $th.text(data.text);",
  "    }",
  "  }",
  "});" 
)
ui <- fluidPage(
  tags$head(
    tags$link(
      rel = "stylesheet", 
      href = "https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.8.0/jquery.contextMenu.min.css"
    ),
    tags$script(
      src = "https://cdnjs.cloudflare.com/ajax/libs/jquery-contextmenu/2.8.0/jquery.contextMenu.min.js"
    )
  ),
  DTOutput("table")
)
server <- function(input, output){
  output[["table"]] <- renderDT({
    datatable(iris, callback = JS(callback))
  }, server = FALSE)  
}
shinyApp(ui, server)

r shiny dt
1个回答
0
投票

你只要用 Buttons 延长。

  output[["table"]] <- renderDT({
    datatable(iris, 
              callback = JS(callback), 
              extensions = "Buttons", 
              options = list(
                dom = "Bfrtip",
                buttons = list("excel")
              )
    )
  }, server = FALSE)  
© www.soinside.com 2019 - 2024. All rights reserved.