Свяжите базу данных Excel с помощью DownloadLink in Shiny - PullRequest
1 голос
/ 18 июня 2020

Не могли бы вы помочь мне связать базу данных Excel с моей ссылкой для загрузки? Поэтому всякий раз, когда я нажимаю «Загрузить стандартную базу» в блестящем, автоматически загружается база данных Excel. Я сделал минимальный пример ниже, чтобы показать идею. Я не знаю, как настроить его на моем сервере, чтобы это работало правильно.

Спасибо!

library(shiny)

ui <- fluidPage(

    titlePanel("Old Faithful Geyser Data"),
    sidebarLayout(
        sidebarPanel(

            sliderInput("bins",
                        "Number of bins:",
                        min = 1,
                        max = 50,
                        value = 30),
            downloadLink("standarddatabase", h4("Download the standard base")),
              ),

        mainPanel(
           plotOutput("distPlot")
        )
    )
)

server <- function(input, output) {

    output$distPlot <- renderPlot({
        x    <- faithful[, 2]
        bins <- seq(min(x), max(x), length.out = input$bins + 1)

       hist(x, breaks = bins, col = 'darkgray', border = 'white')
    })
}

shinyApp(ui = ui, server = server)

1 Ответ

2 голосов
/ 19 июня 2020
library(shiny)
#install.packages("xlsx", dependencies = TRUE)
library(xlsx)
ui <- fluidPage(

    titlePanel("Old Faithful Geyser Data"),
    sidebarLayout(
        sidebarPanel(

            sliderInput("bins",
                        "Number of bins:",
                        min = 1,
                        max = 50,
                        value = 30),
            downloadButton("downloadData", "Download Standard Database"),
        ),

        mainPanel(
            plotOutput("distPlot")
        )
    )
)

server <- function(input, output) {

    output$distPlot <- renderPlot({
        x    <- faithful[, 2]
        bins <- seq(min(x), max(x), length.out = input$bins + 1)

        hist(x, breaks = bins, col = 'darkgray', border = 'white')
    })


    # Reactive value for selected dataset ----
    datasetInput <- reactive({
        switch(faithful,
               "eruptions" = eruptions,
               "waiting" = waiting)
    })

    # Table of selected dataset ----
    output$table <- renderTable({
        faithful
    })

    # Downloadable csv of selected dataset ----
    output$downloadData <- downloadHandler(
        filename = function() {
            paste0(deparse(substitute(faithful)), ".xlsx")
        },
        content = function(file) {
            write.xlsx(as.data.frame(faithful), file, 
                       sheetName = deparse(substitute(faithful)),
                       row.names = FALSE)
        }
    )
}

shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...