微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让用户在 R Shiny 中下载预加载、格式化的 excel 文档?

如何解决如何让用户在 R Shiny 中下载预加载、格式化的 excel 文档?

我正在构建一个 Shiny 应用,用户可以在其中完成一项调查,并根据他们的回答为他们推荐不同的模板以供他们使用。模板都是格式严重的 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

解决方法

文件名中缺少 .。此外,您可以将希望用户下载的所有文件保存在 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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。