如何从Shiny的选定选项卡下载编辑过的表格?

时间:2016-05-31 08:39:53

标签: download tabs shiny tabpanel rhandsontable

我创建了一个Shiny应用程序,它将.csv文件作为输入,并根据Grade列生成选项卡。

数据看起来像这样

Name    Age Score Grade
Jane    13  89    A
Hanna   14  67    B
Jack    13  80    A
Leena   14  78    B
Amy     12  65    B
Nina    14  90    A
Steven  12  45    C
Omy     13  59    C

代码将在每个选项卡中生成表格,其中仅包含与成绩匹配的数据集行。 这些表是可编辑的。我正在尝试从活动的tabPanel下载已编辑的表,但我仍然坚持downloadHandler中的内容。我附上了我的代码以供参考。对于凌乱的代码感到抱歉,我对光亮很新。

library(shiny)
library(xlsx)
library(rhandsontable)

ui <- fluidPage(  
    titlePanel("Scores"),  
    sidebarLayout(    
        sidebarPanel(      
            fileInput("file", "Upload the file"),      
            br(),     
            downloadButton('downloadData', 'Save as excel')   
        ),    
        mainPanel(uiOutput("op"))  
      )
    )

server <- function(input, output, session) {
    data <- reactive({  
        file1 <- input$file   
        if (is.null(file1)) {
                  return()   
        }
          read.csv(file = file1$datapath) 
    })  

    fun1 <- function(x) {
            mydf <- data()
            DF <- mydf[(mydf$Grade == x), c(1:3)]
            table <- renderRHandsontable({
                  newtable<- rhandsontable(DF, rowHeaders = NULL)
            })
           tabPanel(x, table)
    }

    output$op <- renderUI({
            if (is.null(data()))
                 helpText("File not uploaded!")
            else{
                mydf <- data()
                Tabs <- lapply((unique(mydf$Grade)), fun1)
                do.call(tabsetPanel, c(id = "tabs", Tabs))
        }
    })

    output$downloadData <- downloadHandler(
       filename = function() {
          'Edited table.xls'
       },
        # what should go in place of table
       content = function(file) {
           write.xlsx(table, file)
        }
     )  
   }

shinyApp(ui, server)

0 个答案:

没有答案