Скачать в формате Excel или CSV на основе пользовательского ввода.Код работает только для предварительно выбранного значения в radioButtons.Как показано ниже, он работает для CSV, потому что selected = "csv"
.Если он изменен на xlsx, он работает только для xlsx.Пользователь должен иметь возможность выбирать, и обе опции должны быть возможны.
Возможно, значение кэшировано, и мне нужно как-то принудительно обновить.
library(shiny)
ui <- fluidPage(
h4("Download data"),
wellPanel(
fluidRow(
column(4, radioButtons("dl_data_file_type", "Format",
choices = c(excel = "xlsx",
csv = "csv"),
selected = "csv")),
column(5),
column(3, downloadButton("dl_data_dwnld_bttn"))
)))
server <- function(input, output) {
output$dl_data_dwnld_bttn <- {
downloadHandler(
filename = stringr::str_c(Sys.Date(), " Palim.", input$dl_data_file_type),
content = function(file){
x <- iris
if ( input$dl_data_file_type == "xlsx") {
writexl::write_xlsx(x, file)}
else if ( input$dl_data_file_type == "csv") {
readr::write_csv(x, file)}
})}}
shinyApp(ui = ui, server = server)
Ошибка в том, что файл Excelвсе еще заканчивается на .csv и не может быть открыт Excel.