2016-08-24 9 views
1

Я чувствую себя немного глупо, задавая все эти основные вопросы, но я ничего не мог найти по этому поводу. Я хотел бы разрешить моим пользователям называть файл, когда они нажимают кнопку «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)) 
+0

Я не верю, что это возможно. Имя файла является параметром в параметрах: https://github.com/rstudio/DT/issues/343#issuecomment-239600594, а опции не реагируют, поэтому вам придется перерисовывать таблицу каждый раз, когда имя файла было изменено , – Carl

+0

Но тогда я могу добавить опцию имени файла где-нибудь, чтобы выбрать другое имя? –

+0

Да, опубликует ответ, когда перед компьютером – Carl

ответ

5

Вы можете сделать реактивную 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)) 
+1

Спасибо, тем временем я переключился на Download Handler, также потому, что мое приложение стало медленным, используя параметр server = FALSE. –

 Смежные вопросы

  • Нет связанных вопросов^_^