当我尝试在Shiny App中实现下载按钮时遇到了一个问题。每次我运行该应用程序时,它只会显示一个HTML文件,而不显示实际的内容文件。这是我的服务器和UI部分代码。
library(shiny)
library(reticulate)
shinyServer(function(input,output){
reticulate::source_python("function.py")
data_xi <- run_xi(26)
output$downloadData <- downloadHandler(
filename = function(){
paste(Sys.time(), 'site_mtx.xlsx')
},
content = function(file){
write_xlsx(data_xi, file)
}
)
})
这是用户界面:
library(shiny)
shinyUI(fluidPage(
downloadButton("downloadData", "Download Metrics Reports")
))
我只是试图在我的python文件中使用网状函数,并将处理后的数据帧保存到Shiny App,可以下载,非常感谢!
答案 0 :(得分:1)
我在代码中进行了一些调整(例如,我没有您的文件),并且该文件通常会下载xlsx文件。添加data.frame(run_xi(26)),如果这不是问题,也许可以使用“ writexl”库。 希望对您有所帮助。
library(shiny)
library(reticulate)
library(writexl)
if (interactive()) {
ui <-fluidPage(
downloadButton("downloadData", "Download Metrics Reports")
)
server <- function(input,output){
data_xi <- data.frame(s = c(1:3),r = c(4:6), x =c(19:21))
output$downloadData <- downloadHandler(
filename = function(){
paste(Sys.time(), 'site_mtx.xlsx')
},
content = function(file){
write_xlsx(data_xi, file)
}
)
}
shinyApp(ui, server)
}