Я бы хотел, чтобы пользователь мог несколько раз ответить на форму перед загрузкой файла, при этом каждая последующая форма будет добавлена в файл Excel.
Я рассмотрел цикл, в котором пользователь может вводить сколько раз в цикле, но я бы предпочел, чтобы пользователь мог вычислять несколько раз, но загружать файл нужно только один раз. Я не уверен, с чего начать. Я также рассмотрел блестящие модули, но я не уверен, что это будет самый эффективный способ завершить это. Я включил упрощенную версию:
library(shiny)
library(lubridate)
library(openxlsx)
ui <- fluidPage(
textInput("name","Name"),
dateInput("date","Birthdate"),
textInput("title","Title"),
fileInput("excelfile","Excel File"),
actionButton("calculate","Calculate"),
downloadButton("download","Download")
)
server <- function(input, output) {
createcolumns<-observeEvent(input$calculate,{
age<-year(Sys.Date())-year(input$date)
df<-data.frame("Name"=input$name,"Age"=age,"Title"=input$title)
wb<-loadWorkbook(input$excelfile$datapath)
writeData(wb,"Sheet1",df)
saveWorkbook(wb,input$excelfile$datapath,overwrite = TRUE)
})
output$download<-downloadHandler(
file = function(){
filename<-strsplit(input$excelfile$name,"\\.")
filename<-filename[[1]][1]
filename<-paste0(filename,"_",Sys.Date())
paste(filename,"xlsx",sep=".")
},
content = function(file){
file.rename(input$excelfile$datapath,file)
},
contentType = "application/xlsx"
)
}
# Run the app ----
shinyApp(ui = ui, server = server)
В идеале, пользователь может ввести несколько человек за один раз, а затем, как только все войдут, загрузить завершенный файл Excel.