如何在Shiny上通过downloadHandler下载工作簿?

如何在Shiny上通过downloadHandler下载工作簿?,r,shiny,downloadfile,openxlsx,R,Shiny,Downloadfile,Openxlsx,如何将工作簿保存在特定文件夹中 并让用户可以下载它 参考: 程序: 创建一个数据源 另存为工作簿 可通过以下方式下载: 将其读取为xlsx文件 即使工作簿已写入文件夹, 下载该工作簿时出错 library(shiny) library(openxlsx) library(writexl) library(tidyverse) ui <- fluidPage( downloadButton("dl", "Download") ) server <- function(inp

如何将工作簿保存在特定文件夹中 并让用户可以下载它

参考:

程序:

  • 创建一个数据源
  • 另存为工作簿
  • 可通过以下方式下载: 将其读取为xlsx文件
即使工作簿已写入文件夹, 下载该工作簿时出错

library(shiny)
library(openxlsx)
library(writexl)
library(tidyverse)
ui <- fluidPage(
  downloadButton("dl", "Download")
)

server <- function(input, output) {
  data1 = mtcars[,c(1,2)] %>% head() # data for Col 1 ,until Row 6
  data2 = gapminder::gapminder[,c(1,4)] %>% head() # data for Col 1 , Row from 8 until Row 13
  data3 = mtcars[,c(1,2)] %>% tail() # data for Col 1 , Row from 15 until Row 20

  # Creating a workbook for user to download
  wb <- createWorkbook()
  addWorksheet(wb, sheetName = "sheet1")
  writeData(wb, sheet = 1, x = data1, startCol = 1, startRow = 1)
  writeData(wb, sheet = 1, x = data2, startCol = 1, startRow = 8)
  writeData(wb, sheet = 1, x = data3, startCol = 1, startRow = 15)
  ex_wb <- paste0("example", ".xlsx")
  saveWorkbook(wb, file = ex_wb, overwrite = TRUE)

  output$dl <- downloadHandler(
    filename = function(){ex_wb # filename
      },
    content = function(file) {
      # Content to be available for user to download 
      read.xlsx(ex_wb) # Making dataframe available for user to download
    })
}
shinyApp(ui, server)
库(闪亮)
库(openxlsx)
图书馆(writexl)
图书馆(tidyverse)
ui%head()#第1列第8行到第13行的数据
数据3=mtcars[,c(1,2)]%>%tail()#列1的数据,从第15行到第20行
#创建供用户下载的工作簿
wb试试这个:

library(shiny)
library(openxlsx)
library(writexl)
library(tidyverse)
ui <- fluidPage(
  downloadButton("dl", "Download")
)

server <- function(input, output) {
  data1 <- mtcars[, c(1, 2)] %>% head() # data for Col 1 ,until Row 6
  data2 <- gapminder::gapminder[, c(1, 4)] %>% head() # data for Col 1 , Row from 8 until Row 13
  data3 <- mtcars[, c(1, 2)] %>% tail() # data for Col 1 , Row from 15 until Row 20

  # Creating a workbook for user to download
  wb <- createWorkbook()
  addWorksheet(wb, sheetName = "sheet1")
  writeData(wb, sheet = 1, x = data1, startCol = 1, startRow = 1)
  writeData(wb, sheet = 1, x = data2, startCol = 1, startRow = 8)
  writeData(wb, sheet = 1, x = data3, startCol = 1, startRow = 15)


  output$dl <- downloadHandler(
    filename = function() {
      paste0("example", ".xlsx")
    },
    content = function(file) {
      saveWorkbook(wb, file = file, overwrite = TRUE)
    }
  )
}
shinyApp(ui, server)
库(闪亮)
库(openxlsx)
图书馆(writexl)
图书馆(tidyverse)

我认为在Rstudio中使用
downloadHandler
会导致问题。您是否尝试在chrome或其他浏览器中运行您的应用程序以查看它是否在那里工作?谢谢您的建议。实际上,当我们运行应用程序时,它会在Chrome中弹出。但是,单击“下载”按钮时会发生错误