自定义按钮扩展名下载的文件名

时间:2016-08-24 21:03:27

标签: r shiny dt

我对提出所有这些基本问题感到有些愚蠢,但我找不到任何相关内容。我想允许我的用户在点击' excel'我的桌子按钮。下载对话框打开,或者弹出另一个用户界面,可以输入名称。那可能吗?现在,名称等于应用程序的标记。

rm(list=ls()) 
library(shiny)
library(datasets)
library(DT)
library(data.table)
DT<-data.table(matrix(abs(rnorm(600*40,sd=100)),nrow=600))

server<-shinyServer(function(input, output) {
  output$view <- DT::renderDataTable(
    DT[,.SD],extensions = c( 'FixedHeader','Buttons'),
      options=list(pageLength=60,fixedHeader = TRUE,dom = 'Bfrtip',buttons = c( 'csv', 'excel'  )))
}) 

ui<-shinyUI(fluidPage(
  titlePanel("Shiny MWE"),
        DT::dataTableOutput("view")
    ))

runApp(list(ui=ui,server=server))

1 个答案:

答案 0 :(得分:7)

您可以制作被动datatable,然后将其传递给renderDataTable,但每次更改文件名时都会重新呈现:

rm(list=ls()) 
library(shiny)
library(datasets)
library(DT)
library(data.table)
DT<-data.table(matrix(abs(rnorm(600*40,sd=100)),nrow=600))

server<-shinyServer(function(input, output) {

  dt <- reactive({
    DT::datatable(DT[,.SD],extensions = c( 'FixedHeader','Buttons'),
    options=list(pageLength=60,fixedHeader = TRUE,dom = 'Bfrtip',
                 buttons = list("csv",list(extend='excel',filename=input$filename))))
  })

  output$view <- DT::renderDataTable(
    dt(),server=FALSE
    )
}) 

ui<-shinyUI(fluidPage(
  titlePanel("Shiny MWE"),
  textInput("filename","Enter file name"),
  DT::dataTableOutput("view")
))

runApp(list(ui=ui,server=server))