0

我正在构建一个闪亮的应用程序,用户可以在其中完成一项调查,并根据他们的回答为他们推荐不同的模板供他们使用。模板都是高度格式化的 excel 文件(例如,上面有图片、未对齐的标题等),就像我在这里上传的屏幕截图一样。不幸的是,stackoverflow 不允许我上传 excel 文件以使其完全可重现,但如果您可以使用任何非表格 excel 文件运行它,它会起作用。[![在此处输入图像描述][1]][ 1]

这些模板全部上传到服务器,用户输入不影响它们。我已经尝试过其他人的示例,例如 [one][2],但我不断收到错误。

我如何得到它,所以当用户单击下载按钮时,他们得到的 excel 文件与它显示的完全一样?

library(readxl)
library(shiny)
library(writexl)


ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
  ),
    
    mainPanel(
      downloadButton("downloadData", "Download Fancy Excel File")
        )))


server <- function(input, output) {

  
  output$downloadData <- downloadHandler(
    filename = function() {
      paste("file", "xlsx", sep='')
    },
    content = function(file) {
      myfile <- srcpath <- 'Home/Other Layer/Fancy Template.xlsx'
      file.copy(myfile, file)
    }
  )
  }

# Run the application 
shinyApp(ui = ui, server = server)
~~~~


  [1]: https://i.stack.imgur.com/FK034.png
  [2]: https://stackoverflow.com/questions/39449544/shiny-download-an-excel-file
4

1 回答 1

0

.在文件名中缺少 a。此外,您可以将希望用户下载的所有文件保存在www文件夹中。以下对我有用。

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
    ),
    
    mainPanel(
      downloadButton("downloadData", "Download Fancy Excel File") 
    )))


server <- function(input, output) {
  
  output$downloadData <- downloadHandler(
    filename = function() {
      paste("testfile", ".xlsx", sep='')
    },
    content = function(file) {
      # myfile <- srcpath <- 'Home/Other Layer/Fancy Template.xlsx'
      myfile <- srcpath <-  "./www/test141.xlsx"
      file.copy(myfile, file)
    }
  )
}

# Run the application 
shinyApp(ui = ui, server = server)
于 2021-07-22T01:51:39.627 回答