R 将用户输入和表格输出导出到一个Excel文件中

R 将用户输入和表格输出导出到一个Excel文件中,r,shiny,R,Shiny,我已经编写了一个应用程序,允许用户提供一些输入。该应用程序将调用一个函数进行一些计算,并生成表格格式的输出 我想添加一个按钮,允许用户将输入和输出下载到Excel电子表格(带有两个选项卡) 下面是代码的简化版本,我想在这里下载输入和示例表。我已尝试以下代码,但失败: library(shiny) library(openxlsx) somefunction <- function() { data.frame(text = c("sample1","sample2"))} ser

我已经编写了一个应用程序,允许用户提供一些输入。该应用程序将调用一个函数进行一些计算,并生成表格格式的输出

我想添加一个按钮,允许用户将输入和输出下载到Excel电子表格(带有两个选项卡)

下面是代码的简化版本,我想在这里下载输入和示例表。我已尝试以下代码,但失败:

library(shiny)
library(openxlsx)
somefunction <- function() { 
   data.frame(text = c("sample1","sample2"))}

server <- function(input, output, session) {

  dataReactive <- reactive({
    data.frame(text = c(input$text1, input$text2, input$text3))

  })

  observeEvent(input$goButton,{
    output$exampleTable <- DT::renderDataTable({somefunction()})
  })

  output$downloadExcelSheet <- downloadHandler(
    filename = function() {
      paste("result",Sys.Date(), ".xlsx",sep="")
    },
    content = function(file) {
      write.xlsx(list(dataReactive(),exampleTable), file)
    })
}

ui <- fluidPage(

  sidebarLayout(
    sidebarPanel(
      textInput("text1","Text 1:",value="Input 1"),
      textInput("text2","Text 2:",value="Input 2"),
      actionButton("goButton", "Calculate"),
      downloadButton("downloadExcelSheet", "Download Data")
    ),
    mainPanel(
      DT::dataTableOutput("exampleTable")
    )
  )
)
shinyApp(ui = ui, server = server)
库(闪亮)
库(openxlsx)
某些函数

使用
reactiveValues
作为中间状态保存变量,以便以后重用。

谢谢。如果我的实际数据是通过操作按钮生成的呢?我已经更新了上面的代码,以显示它的实际外观。我试图合并您的代码,但不断出现错误[没有可用的堆栈跟踪]
 server <- function(input, output, session) {

    dataReactive <- reactive({
      data.frame(text = c(input$text1, input$text2, input$text3))

    })
    data <- reactiveValues()
    observeEvent(input$goButton,{
      output$exampleTable <- DT::renderDataTable({
        data$df <- somefunction()
      })
    })
    output$downloadExcelSheet <- downloadHandler(
      filename = function() {
        paste("result",Sys.Date(), ".xlsx",sep="")
      },
      content = function(file) {
        write.xlsx(list(dataReactive(),data$df), file)
      })
  }
observeEvent(input$goButton,{
       data$df <- somefunction()
})
output$exampleTable <- DT::renderDataTable({data$df})