简体   繁体   English

R Shiny openxlsx:上传的 xlsx 文件 - select 下拉菜单中的一张表

[英]R Shiny openxlsx: uploaded xlsx file - select a sheet from drop-down menu

In my Shiny app, I can upload an xlsx file and select sheet by typing the sheet's name:在我的 Shiny 应用程序中,我可以通过输入工作表的名称来上传 xlsx 文件和 select 工作表:

library(shiny)
library(openxlsx)
runApp(
  list(
    ui = fluidPage(
      titlePanel("openxlsx - choose sheet"),
      sidebarLayout(
        sidebarPanel(
          fileInput('file1', 'Choose xlsx file',
                    accept = c(".xlsx"))),

        mainPanel(tableOutput('contents'),
          textInput("tab1", "Type in sheet name:", "Sheet1")))),
    server = function(input, output,session){
      output$contents <- renderTable({
        inFile <- input$file1
        if(is.null(inFile))
          return(NULL)
        file.rename(inFile$datapath,paste(inFile$datapath, ".xlsx", sep=""))
        read.xlsx(paste(inFile$datapath, ".xlsx", sep=""), sheet=input$tab1)
      })}))

I would prefer to be able to use a drop-down menu to select a sheet.我希望能够使用下拉菜单来 select 一张表。 I know I can use openxl package to get the sheets names, but I am not sure how to implement that in Shiny.我知道我可以使用 openxl package 来获取工作表名称,但我不确定如何在 Shiny 中实现它。 Any help will be appreciated.任何帮助将不胜感激。

In the UI:在用户界面中:

uiOutput("dropdownUI")

In the server:在服务器中:

Workbook <- eventReactive(input$file1, {
  loadWorkbook(input$file1$datapath)
})

Sheets <- eventReactive(Workbook(), {
  names(Workbook())
})

output$dropdownUI <- renderUI({
  req(Sheets())
  selectInput("sheet", "Choose a sheet", Sheets())
})

Dat <- eventReactive(input$sheet, {
  read.xlsx(Workbook(), sheet = input$sheet)
})

output$contents <- renderTable({
  req(Dat())
  Dat()
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM